我想计算已知 ABCD 平行四边形中的 A、B、D 的坐标。
这很好用:
\coordinate (C) at ($(B)!.5!(D)!-1!(A)$) ;
这不起作用,为什么?
\coordinate (C) at ($(B)+(D)-2*(A)$) ;
这里是 MWE:
\documentclass[tikz]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\coordinate (A) at (5,2) ;
\coordinate (B) at (1,-4) ;
\coordinate (D) at (-5,6) ;
% This doesn't work, why ?
\coordinate (C) at ($(B)+(D)-2*(A)$) ;
\coordinate (C) at ($(B)!.5!(D)!-1!(A)$) ;
\draw (A)--(B)--(C)--(D)--cycle ;
\end{tikzpicture}
\end{document}
答案1
我试图直观地展示原因,如果您需要详细信息,请告诉我。2*==>
表示不起作用的结果。!==>
是在职的一。虽然从路径上看,它们都正常工作。它们只是语法不等同。特别是,(B)+(D)
总和是相对于原点的,而不是彼此的。
因此不起作用的是:
(1,-4) + (-5,6) - (10,4) = (-14,-2)
与我放入节点的文本匹配。因此匹配计算是
(B) + (D) - (A)
没有2*
别介意pt
它们是厘米等价物但我懒得删除它们。
\documentclass[tikz]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[every label/.style={font=\Huge}]
\coordinate[label=A] (A) at (5,2) ;
\coordinate[label=B] (B) at (1,-4) ;
\coordinate[label=D] (D) at (-5,6) ;
\draw[blue,thick,->] (0,0) --++(B)--++(D)--++([scale=-1]A)--++ ([scale=-1]A)
let \p1 = ($(B)+(D)-2*(A)$),
\n1={int(\x1/28.3464567)},
\n2={int(\y1/28.3464567)} in node[below,font=\Huge]{\texttt{2*==>} \n1,\n2};
\draw[red,ultra thick,->] (0,0) -- ($(B)!0.5!(D)$) -- (A) to[bend right]($(B)!0.5!(D)!-1!(A)$)
let \p1 = ($(B)!.5!(D)!-1!(A)$),
\n1={int(\x1/28.3464567)},
\n2={int(\y1/28.3464567)} in node[below right,font=\Huge] {\texttt{!=>}\n1,\n2};
\end{tikzpicture}
\end{document}