这个问题部分延伸到这邮政。
我正在使用以下命令行来旋转一条用于测量圆半径的线,如在回答中提到的那样以上提及的邮政:
\draw[-latex, rotate around={45:(0,0)}] (0,0) -- (6,0) node [midway,fill=white] {$\text{Text}$};
问题是,我没有使用,(6,0)
而是一个用极坐标计算的点(p)
。只要我(6,0)
用替换(p)
,旋转就不起作用。
rotate around
我该如何解决显然不适用于极坐标中的点这一事实?
编辑:我添加了用于用极坐标计算点的精确代码(它被称为last1
):
\documentclass{standalone}
\newcommand{\ts}[1]{\textnormal{#1}}
\usepackage{tikz}
\usetikzlibrary{positioning,arrows,calc,math,angles,quotes,trees,mindmap,through}
%include other needed packages here
\begin{document}
\begin{tikzpicture}
\draw[-latex] (-4,0) -- (4,0) node[right]{$\ts{Re}(r)$};
\draw[-latex](0,-4) -- (0,4) node[above] {$\ts{Im}(r)$};
\def\z{0}
\def\zz{-1.5}
\def\zzz{-5}
\coordinate (last1) at (0:0);
\coordinate (last2) at (0:0);
\coordinate (last3) at (0:0);
\foreach \y in {1,2,3,4,5,6,7,8,9,10,11,12,13,14}
{
\pgfmathsetmacro{\o}{0.05*random(0,1000)};
\pgfmathsetmacro{\t}{0.005*random(0,100)};
\draw[->] (last1) -- ++ (\o*\z:\t) coordinate (last1);
\draw[->] (last2) -- ++ (\o*\zz:\t) coordinate (last2);
\draw[->] (last3) -- ++ (\o*\zzz:\t) coordinate (last3);
};
\node at (0,0) [draw,dotted, circle through={(last1)}] {};
\draw[-latex,line width=0.7mm] (0:0) -- (last3);
\draw[-latex, rotate around={45:(0,0)}] (0,0) -- (last1) node [midway,fill=white] {$\sum |b_{z_1z_2\cdots z_N}|^2 =1$};
\end{tikzpicture}
\end{document}
答案1
我必须承认,我花了一段时间才明白你的意思,所以我尝试用我自己的话重述它:
问题是\draw[-latex, rotate around={45:(0,0)}] (0,0) -- (4,0);
可以工作(结果线旋转了 45 度)。类似地,\draw[-latex, rotate around={45:(0,0)}] (0,0) -- (0:4);
可以工作。但是,只要您将路径的其中一个坐标替换为先前定义的坐标,转换就不再起作用。因此,\draw[-latex, rotate around={45:(0,0)}] (0,0) -- (last1);
实际上不会导致旋转的线,尽管坐标(last1)
定义为(0:<x>)
。
这个问题似乎与另一个问题。原因是坐标是在变换范围之外定义的(实际上,这不完全是范围问题,而是一个在锚点上应用逆变换的功能,在大多数情况下这是非常合理的*;感谢 Qrrbrbirlbel!)。我实际上可以理解这种行为非常奇怪,至少不是直接显而易见的。
因此,您需要做的是明确转换先前定义的坐标。由于路径的另一个坐标是(0,0)
,因此您无需转换路径的其余部分:您可以写入\draw[-latex] (0,0) -- ([rotate=45]last1);
并将得到一条旋转 45 度的线。
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[-latex, red, rotate around={10:(0,0)}] (0,0) -- (4,0);
\draw[-latex, magenta, rotate around={20:(0,0)}] (0,0) -- (0:4);
% behaviour not as expected
\coordinate (last1) at (4,0);
\draw[-latex, blue, thick, rotate around={30:(0,0)}] (0,0) -- (last1);
% behaviour not as expected
\coordinate (last2) at (0:4);
\draw[-latex, cyan, rotate around={40:(0,0)}] (0,0) -- (last2);
\coordinate (last3) at (4,0);
\draw[-latex, green] (0,0) -- ([rotate=50]last3);
\coordinate (last4) at (0:4);
\draw[-latex, yellow] (0,0) -- ([rotate=60]last4);
\end{tikzpicture}
\end{document}
* 请参阅第 106.3.1 节“引用同一张图片中的节点的锚点”PGF 手册。