将局部坐标系附加到图形上

将局部坐标系附加到图形上

我想使用 tikz 为图形 (平面 jpeg) 添加局部坐标框架。如果我将平面放置在原点 (0,0),则使用以下代码似乎可以正常工作。

\documentclass[preview, convert]{standalone}

\usepackage{tikz}

\begin{document}

\usetikzlibrary{arrows}
\begin{tikzpicture}[
    scale=1, 
    axis/.style={very thick, ->, >=stealth'}]

\draw[help lines] (0,0) grid (5,5);

\node[anchor=center,rotate=45,opacity=0.5] 
    (ego) at (0,0) {\includegraphics[scale=0.2]{latex/plane.jpeg}};
\begin{scope}[x={(ego.east)},y={(ego.north)}]
    \draw [<->, thick] 
        (-0.5,1.5) node [left] (y_ego) {$y$} -- 
        (-0.5,0) -- 
        (1.5,0) node [below right] (x_ego) {$x$};
\end{scope}

\end{tikzpicture}
\end{document}

在此处输入图片描述

但当我将其移动到另一个位置(本例中为 3,3)时,局部框架并没有像我预期的那样移动。我做错了什么?

在此处输入图片描述

如何将局部坐标框架附加到图形上?

答案1

那这个呢:

  • 使用默认轴作为范围
  • 将瞄准镜旋转与图中相同的角度

为了轻松展示我将你的图包装在宏中:\myfig它采用两个参数来显示行为。然后,我只需移动scope并使用相同的量旋转它即可。

\documentclass[preview, convert]{standalone}

\usepackage{tikz}

\begin{document}
  \usetikzlibrary{arrows}

  \newcommand{\myfig}[3]{
    \node[anchor=center,rotate=#3,opacity=0.5] 
    (ego) at (#1,#2) {\includegraphics[scale=0.2]{example-image-a}};

    \begin{scope}[shift=(ego.center), rotate=#3]
      \draw [<->, thick] 
      (0,1.5) node [left] (y_ego) {$y$} -- 
      (0,0) -- 
      (1.5,0) node [below right] (x_ego) {$x$};
    \end{scope}
  }

  \begin{tikzpicture}[
    scale=1, 
    axis/.style={very thick, ->, >=stealth'}
  ]
    \draw[help lines] (0,0) grid (5,5);

    \myfig{0}{0}{45}

    \myfig{3}{3}{45}

    \myfig{5}{0}{30}
  \end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容