PGF 函数可以获取坐标作为参数吗?

PGF 函数可以获取坐标作为参数吗?

我想使用坐标作为 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)$)vu

相关内容