如何从使用 定义的三维点中提取坐标tikz-3dplot
?我想对这些进行一些计算(更具体地说是两个向量的叉积),但似乎在坐标\z1
(Undefined control sequence
)上被难住了,如下例所示:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{tikz-3dplot}
\begin{document}
\begin{figure}
\tdplotsetmaincoords{0}{0}
\begin{tikzpicture}[tdplot_main_coords]
\coordinate (A) at (1,2,3);
\path let \p1=(A) in (\z1,\y1,\x1) coordinate (B);
\end{tikzpicture}
\end{figure}
\end{document}
答案1
当 TikZ 读取坐标规范时,它会直接将其转换为其内部标准格式。这意味着它不记得有关如何指定该坐标的任何信息。(据我所知,唯一不完全正确的地方是路径的终点,to
终点坐标通过原样路径构造to
)。具体来说,当 TikZ 遇到 形式的坐标时,(1,2,3)
它会立即将其转换为1*x-vector + 2*y-vector + 3*z-vector
。当 TikZ/PGF 记住节点的位置时,它只会记住结果。因此,普通的 TikZ/PGF 无法实现您所要求的功能。
但是,可以定义一个新的坐标系,在处理过程中插入“保存”步骤。使用用户定义的坐标系时,TikZ 允许使用任意代码,并且对该代码的唯一要求是它以该点的内部表示应该是什么的声明结束。因此,可以保存此时的输入坐标并记住其 3D 特性。但是,由于这发生在 TikZ 的正常流程之外,因此正常的 TikZ 内容无法使用额外信息,因此每个应该使用它的部分都必须进行调整,以便它具有 3D 感知能力。这并非易事!
在TeX-SX 启动板网站上,我有一些初步的代码,专门用于实现这一点。你可以在此查看一些示例https://tex.stackexchange.com/a/52627/86
不幸的是,它显然还不够先进,无法处理语法let
。所以它不能完全满足您的要求。