如何获取坐标的 x、y 和 z 分量?

如何获取坐标的 x、y 和 z 分量?

我希望能够使用中定义的坐标的和分量x,以便在代码中的其他地方重用这些值。例如,让我们来做类似的事情,yzTikZ

\coordinate (p1) at (-2.6,0.7,0);

我想做如下的事情,

\coordinate (p11) at (p1_x,p1_y,12);

我怎样才能做到这一点?

答案1

好吧,虽然对于一般情况来说不可能找到解决方案(原因 Andrew 在评论中已经解释过了),但是对于这种特殊情况来说,通过一种非常非常糟糕的黑客手段,是有可能找到解决方案的。

问题是,只要你设置类似的东西:

\coordinate (p) at (3,4,5);

(3,4,5)tikz根据键的当前值xy和计算3D点的投影z,并获取2D点,其坐标存储在中(p)。因此,存储在中的坐标的最终值(p)是绝对单位(pt),当然不是3和4。

在这种特殊情况下,坐标p1z=0:

\coordinate (p1) at (3,4,0);

因此对于这一点计算出的坐标应该等于给定的,即:3 和 4。但有一个问题,它们以绝对单位存储(在本例中为 pt)。Tikz 将 3(和 4)乘以键x(和y)的值,默认情况下为 1cm,结果pt就是(p1)。因此,使用let...in构造我们可以提取这些值,但它们将以点为单位。

因此,最可怕的黑客是将x和定义y为等于 1pt,以便图形使用点而不是厘米作为默认单位。这有效:

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\usetikzlibrary{calc}

\begin{tikzpicture}[x=1pt, y=1pt, z=-0.5pt]  % Agh
% Let's draw some 3D axes
\coordinate (x) at (100,0,0);
\coordinate (y) at (0,100,0);
\coordinate (z) at (0,0,100);
\foreach \axis in {x,y,z}
   \draw[-latex] (0,0,0) -- (\axis);

% Our point
\coordinate (p1) at (80, 30, 0);
% Compute the point at the same x,y, elevated 25pt in z
\path let \p1 = (p1)
         in coordinate (p11) at (\x1, \y1, 25);

% Draw those points
\fill[red]     (p1) circle (1pt);
\fill[blue]   (p11) circle (1pt);
% Some bells and whistles
\draw[dotted] (p1) -- (p1|-x);
\draw[dotted] (p1) -- (p1-|y);
\draw[dashed,-latex] (p1) -- (p11);
\end{tikzpicture}

结果是:

结果

相关内容