Tikz:提取极坐标

Tikz:提取极坐标

有没有一种(简单的)方法可以在 Tikz 中提取极坐标?

动机:我将两点 (a) 和 (b) 定义为一条线和一个圆的交点(中心在原点),然后我想在圆上画一条圆弧。为此,我需要 (a) 和 (b) 的极坐标。

我在 TikZ 文档中看到,可以\pgfextractx{<dimension>}{<point>}提取 x 坐标,并且还有用于提取 y 坐标的类似函数,但找不到用于极坐标的函数。

答案1

您可以定义自己的宏,类似于\pgfgetlastxy提取最后的笛卡尔坐标,将它们转换为极坐标并将结果值存储在宏中:

(感谢@John Kormylo,下面的宏逐渐变成了现在简短而清晰的代码。它只需要包tikz而不需要任何额外的库。)

\documentclass[border=1mm, tikz]{standalone}

\newcommand{\pgfgetlastpolar}[2]{
    \pgfgetlastxy{\tempx}{\tempy}
    \pgfmathsetmacro{#1}{atan2(\tempy,\tempx)}
    \pgfmathsetlengthmacro{#2}{veclen(\tempx,\tempy)}
}

\begin{document}
\begin{tikzpicture}

\node[draw, circle] at (1,1) {};

% use analogous to `\pgfgetlastxy{\myx}{\myy}´ 
\pgfgetlastpolar{\mytheta}{\myrho}

\node[draw, rectangle] at (\mytheta:\myrho) {};

\end{tikzpicture}
\end{document}

答案2

如果没有定义圆、点等的最小示例代码以及所需结果的图片,那么要理解您想要什么确实很不容易。

以下是我的猜测:

\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[thick]
\coordinate (a) at (20:2);
\coordinate (b) at (100:2);
\draw (0,0) circle[radius=2];
\draw[teal] (a) -- (b);
\draw[red] let \p1=(a), \p2=(b) in (\p1)  arc[radius=veclen(\p1), start angle={atan2(\y1,\x1)}, end angle={atan2(\y2,\x2)}];
\end{tikzpicture}
\end{document}

带弦和弧的圆

相关内容