![let 命令中是否有极坐标寄存器?](https://linux22.com/image/243379/let%20%E5%91%BD%E4%BB%A4%E4%B8%AD%E6%98%AF%E5%90%A6%E6%9C%89%E6%9E%81%E5%9D%90%E6%A0%87%E5%AF%84%E5%AD%98%E5%99%A8%EF%BC%9F.png)
我已经看到我们可以使用\x1
和\y1
来访问\p1
在中声明的点寄存器的笛卡尔坐标let
。
有没有办法可以访问点的极坐标(类似于\a1
角度和\r1
距离)\p1
?
如果没有,那么做这样的事情最好的方法是什么:
\draw let \p1=(35:1cm) in (\a1+30,\r1) -- (\a1-30,2*\r1);
答案1
我不知道是否有一个直接的寄存器(我也很想知道)但你只需要做一点工作就可以访问该信息:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\draw[style=help lines] (0,0) grid[step=1cm] (3,2);
\draw[red,ultra thick] (0,0) -- (35:3cm);
\draw let \p1=(35:3cm), \n1 = {veclen(\x1,\y1)},\n2 = {atan2(\x1,\y1)} in (0,0) -- (\n2:\n1);
\draw let \p1=(35:1cm), \n1 = {veclen(\x1,\y1)},\n2 = {atan2(\x1,\y1)} in (0,0) -- (\n2+30:2*\n1);
\end{tikzpicture}
\end{document}
这给出
可以进一步将其包装成更实用的宏,但现在它本身并不那么冗长。此外,您可以对另一个点执行相同操作,我的意思是它不需要是角度和长度测量的原点。