我想使用 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}