测量圆的半径:“旋转”不适用于极坐标吗?

测量圆的半径:“旋转”不适用于极坐标吗?

这个问题部分延伸到邮政。


我正在使用以下命令行来旋转一条用于测量圆半径的线,如在回答中提到的那样以上提及的邮政:

\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 手册

相关内容