Tikz:坐标系 xyz 极坐标有什么用途?

Tikz:坐标系 xyz 极坐标有什么用途?

我正在从手册中学习 TikZ — Till Tantau 的解释工作做得很好。然而,我被困在坐标系 xyz 极坐标(见第 138 页tikz 手册)。canvas polar坐标对我来说完全有意义,你通过到坐标原点的距离和角度来定义平面上的点(见图)

在此处输入图片描述

但是xyz polar我不明白手册中的解释,而且这些例子对我来说毫无意义。

请问,能否举一些例子来告诉我使用它们有什么好处?

补充说明:

这条评论在第 139 页这使得它更加奇怪“[xy polar 是] xyz polar 的别名,有些人可能更喜欢不涉及 z 坐标在 xyz 极坐标中”。

这似乎是一个相当复杂的坐标系统。

答案1

区别在于单位。我们来看看第 138 页的 pgfmanual v3.1.5

在此处输入图片描述

也许最重要的陈述是这句话

最后,将得到的向量乘以给定的半径因子。

我们来看一个例子。

\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}
 \draw circle[x radius=2.5,y radius=1];
 \path (xyz polar cs:angle=50,x radius=2.5,y radius=1) 
    node[circle,fill=blue,inner sep=1.5pt]{}
 (canvas polar cs:angle=50,x radius=2.5,y radius=1) 
    node[circle,fill=red,inner sep=1.5pt]{}
 (canvas polar cs:angle=50,x radius=2.5cm,y radius=1cm) 
    node[circle,draw=red,inner sep=1.75pt]{};
\end{tikzpicture}
\end{document} 

在此处输入图片描述

我们没有指定单位,xyz polar cs:并且点在椭圆上的坐标为因素将基向量相乘。如果我们忽略 中的单位canvas polar cs:,它们将被解释为 pt 中的有维度距离,这就是红点非常接近原点的原因。如果我们添加单位,我们就会回到蓝点。

pgfmanual 承认xyz polar第 139 页上的名称可能会引起混淆。

在此处输入图片描述

所以想象一下我们已经谈论了xy polar所有时间(但问题具体是关于xyz polar)。

使用以下方法可获得与上述相同的输出

\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}[x=2.5cm,y=1cm];
 \draw circle[radius=1];
 \path (xy polar cs:angle=50,radius=1) 
    node[circle,fill=blue,inner sep=1.5pt]{}
 (canvas polar cs:angle=50,radius=1)    
    node[circle,fill=red,inner sep=1.5pt]{}
 (canvas polar cs:angle=50,x radius=2.5cm,y radius=1cm) 
    node[circle,draw=red,inner sep=1.75pt]{};
\end{tikzpicture}
\end{document}

你会看到,这样做的好处是我们只需要说radius=1xy polar cs这一点之所以没有得到人们的重视,主要原因是

\path (50:1) node[circle,fill=blue,inner sep=1.5pt]{};

产生相同的蓝点,几乎每个人都使用最后一种语法。解析器通过检查半径是否有维度\ifpgfmathunitsdeclared,如果没有,则将其解释为一个因子。(我建议阅读这个非常好的答案对有或没有明确单位的半径进行非常具有教育意义和清晰的讨论。)

结果是,我们大多数人可能在某个时刻都使用过 类型的极坐标(<angle>:<radius factor>),其中radius factor表示我们没有给半径添加维度。此时我们使用xyz polar cs,也许没有明确注意到它。因此,xyz polar cs实际上是一个非常有用的坐标系,使用频率很高,也许我们用户没有注意到太多。

最后,我们要提到canvas polarxyz polar实际上分别只是\pgfpointpolar和的包装器\pgfpointpolarxy

\tikzdeclarecoordinatesystem{canvas polar}
{%
  \tikzset{cs/.cd,angle=0,radius=0cm,#1}%
  \pgfpointpolar{\tikz@cs@angle}{\tikz@cs@xradius and \tikz@cs@yradius}%
}%

\tikzdeclarecoordinatesystem{xyz polar}
{%
  \tikzset{cs/.cd,angle=0,radius=0,#1}%
  \pgfpointpolarxy{\tikz@cs@angle}{\tikz@cs@xradius and \tikz@cs@yradius}%
}%

后者可分别在第 1084 页和第 1085 页查找

在此处输入图片描述

在此处输入图片描述

因此,再次强调,差异在于半径与半径因子。

编辑

进一步澄清的是,看看当我们\begin{tikzpicture}[x=2.5cm,y=1cm]将上面的示例更改为时会发生什么\begin{tikzpicture}[x=1cm,y=1cm]

\begin{tikzpicture}[x=1cm,y=1cm];
    \draw circle[radius=1];
    \path (xy polar cs:angle=50,radius=1)
    node[circle,fill=blue,inner sep=1.5pt]{}
    (canvas polar cs:angle=50,radius=1)
    node[circle,fill=red,inner sep=1.5pt]{}
    (canvas polar cs:angle=50,x radius=2.5cm,y radius=1cm)
    node[circle,draw=red,inner sep=1.75pt]{};
\end{tikzpicture}

然后我们得到以下

在此处输入图片描述

xyz 极坐标适应 x,y 轴的拉伸。我们看到蓝色圆圈(在 xyz 极坐标中)在画布上移动,保持在半径为 1 的圆上,但红色圆周仍然远离圆圈,处于画布的同一位置。

相关内容