如何在 TikZ 中嵌套坐标计算?

如何在 TikZ 中嵌套坐标计算?

为什么这不起作用?我很少使用 LaTeX 和 TikZ;我看不到它。

\begin{tikzpicture}
\coordinate (Zero)  at (0,0);
\coordinate[label=below:cell a] (vertexA) at (0, 10);
\coordinate[label={above right:cell b}, label={below right:cell c}] 
           (vertexB) at (5, 8);
\coordinate(vertexC) at (2.5, 0);
\coordinate(vertexD) at (12, 4);

\coordinate (centroidCellA) at  ($ 1/3*((vertexA)+(vertexB)+(vertexC)) $);       
\end{tikzpicture}

我明白了

! Package pgf Error: No shape named (vertexA is known.

答案1

坐标计算的语法是

<factor>*<coordinate><modifiers>

问题是(vertexA)+(vertexB)+(vertexC)不是坐标。您必须告诉tikz它您希望它计算 处的坐标(vertexA)+(vertexB)+(vertexC)。这将起作用:

\coordinate (centroidCellA) at  ($ 1/3*($(vertexA)+(vertexB)+(vertexC)$) $);

(您可以嵌套坐标计算)。

答案2

Jan 的回答很完美。另一种可能性是

\documentclass{scrartcl}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document} 
\begin{tikzpicture}
  \coordinate(vertexA) at (0, 10);
  \coordinate (vertexB) at (5, 8);
  \coordinate(vertexC) at (2.5, 0);

  %\coordinate (centroidCellA) at  ($ 1/3*($(vertexA)+(vertexB)+(vertexC)$) $);
  \coordinate (centroidCellA) at (barycentric cs:vertexA=1 ,vertexB=1,vertexC=1); 
\end{tikzpicture}

\end{document}

相关内容