如果有节点 (vector0) 和 (vector1),则一种方法可以获取
($(vector1)-(vector0)$)
就是写
\path ($(vector1)-(vector0)$);
\pgfgetlastxy{\XCoord}{\YCoord};
例如,这种方法出现在此主题
在哪里可以找到
\path(A); \pgfgetlastxy{\xA}{\yA}; %提取A的坐标
或者更准确地说,我上面描述的方法包括用(vector0)-(vector1)替换“A”。
另一个出现此方法的线程是 此主题
在哪里可以找到
\path(z)节点[下方] {$z$}; \pgfgetlastxy{\XCoord}{\YCoord};
问题。
简要来说:如何应该有人会这么做吗?
更详细地:
- 如果 TikZ 程序中某个节点有节点 (vector0) 和 (vector1),那么有哪些值得注意的方法可以获取 ($(vector1)-(vector0)$) 的第一个和第二个坐标?
- 应该使用哪种方法?何时使用?特别是,应该避免使用这种单节点路径技巧吗?
特别是,如何更快地做到这一点,或多或少只用一行,例如通过编写类似
\node (tempnode) at ($(vector1)-(vector0)$)[]{}; \pgfgetlastxy { code involving (tempnode) } { another code involving (tempnode) };
?
答案1
- 如果 TikZ 程序中某个节点有节点 (vector0) 和 (vector1),那么有哪些值得注意的方法可以获取 ($(vector1)-(vector0)$) 的第一个和第二个坐标?
有let
操作。
- 应该使用哪种方法?何时使用?特别是,应该避免使用这种单节点路径技巧吗?
您应该只使用该let
操作,因为它是唯一的高级方法。
- 特别是,如何更快地完成此操作,或多或少只用一行,例如通过编写类似
该let
操作是路径的一部分,因此是一行,另请参见下面的示例。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\node[draw,fill,circle,label={above:vector 0}] (vector0) at (1,2) {};
\node[draw,fill,circle,label={above:vector 1}] (vector1) at (3,1) {};
\draw let \p1=($(vector1)-(vector0)$) in
(vector0) -- +(\x1,0) -- +(\x1,\y1);
\end{tikzpicture}
\end{document}