我想使用坐标作为 PGF 函数的参数。具体来说,计算两个向量之间的角度(通过点积)。
理想情况下,它看起来应该是这样的:
\begin{tikzpicture}
\coordinate (u) at (1,3);
\coordinate (v) at (3,2);
\pfgmathsetmacro{\th}{angle(u,v)}
% Some drawing that uses this angle
% ...
\end{tikzpicture}
我该如何处理这个问题?
答案1
既然你说你想在某个路径中使用角度,我想推荐calc
为此制作的库。
\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\coordinate (u) at (1,3);
\coordinate (v) at (3,2);
\draw (u) -- (0,0) -- (v);
\draw let
\p1=($(u)-(0,0)$),\p2=($(v)-(0,0)$),\n1={atan2(\y1,\x1)},\n2={atan2(\y2,\x2)}
in (\n1:1) arc[start angle=\n1,end angle=\n2,radius=1]
coordinate[midway] (aux)
(3,4) node[right](a){the angle is \pgfmathparse{\n2-\n1}\pgfmathprintnumber\pgfmathresult}
(a.south west) edge[-stealth,out=-135,in={0.5*\n1+0.5*\n2}] (aux);
\end{tikzpicture}
\end{document}
这里,atan2
用于计算直线的倾斜角,角度差就是直线所围成的角度。当然,顺序很重要,也就是说,如果使用相反的约定,则可以得到相反的符号。
假设您想要测量连接(或) 到原点的线之间的角度,则-(0,0)
添加 in ,如果您处于一个发生移动的范围内,那么这是必要的。($(v)-(0,0)$)
v
u