TikZ 在计算中对表达式进行分组

TikZ 在计算中对表达式进行分组

我必须做一些计算,例如:

\node (A) {A};
\node (b) at (x,y) {B};

((A) + (B))*2

但是我不知道如何在计算语句中对其进行分组,我尝试了($((A)+(B))*2$)(${(A)+(B)}*2$)。我该如何表达这一点?(目前我使用($(A)*2+(B)*2$),所以我必须在两个地方调整因子)

运算符也存在类似的问题|-。只要我不尝试对其中一个操作数进行数学运算,我就可以在计算中使用它。有没有办法实现($((A)+(B)) |- (4,7)$)

答案1

对于第一个问题,您可以嵌套坐标计算,先计算A+B,然后将该结果乘以 2:

\node at ($2*($(A)+(B)$)$) {C};

Qrrbrbirlbel 在下面的评论中提到了另一种方法:

\node at ([scale=2]$(A)+(B)$) {C};

对于第二个问题,请参阅 Andrew Stacey 的回答在 TikZ 中结合 |- 和 !.5!简而言之,使用两对括号括起第一个坐标的计算结果:

\node at ({{$(A)+(B)$}} |- 4,7) {D};

完整示例:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}

\draw [help lines] (0,0) grid (2,3); 

\node (A) at (0,1) {A};
\node (B) at (1,0) {B};

\node at ($2*($(A)+(B)$)$) {C};

\node at ({{$(A)+(B)$}} |- 4,3) {D};
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

let操作在这些情况下或对于更复杂的计算非常有用:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\node (A) at (0,1) {A};
\node (B) at (1,0) {B};
\path let \p1=($(A)+(B)$), \p2=($2*(\p1)$) in node at (\p2) {C};
\path let \p1=($(A)+(B)$), \p2=(\p1 |- 4,7) in node at (\p2) {D};
\end{tikzpicture}
\end{document}

相关内容