我正在尝试绘制一个直角三角形,其边上有正方形,以说明毕达哥拉斯定理。这是我的代码
\begin{tikzpicture}[scale=4]
\coordinate[label=200:$A$] (A) at (0,0) ;
\coordinate[label=120:$B$] (B) at (0,1) ;
\coordinate[label=right:$C$] (C) at (1,0) ;
\draw (A) -- (B) -- (C) -- (A) ;
\draw (A) rectangle (0.08,0.08);
\draw[rotate=90] (A) let
\p1=(B),
\p2=(A),
\n1={veclen(\x2-\x1,\y2-\y1)}
in
rectangle (\n1,\n1);
\draw[rotate=270] (A) let
\p1=(C),
\p2=(A),
\n3={veclen(\x2-\x1,\y2-\y1)}
in
rectangle (\n3,\n3);
\draw[rotate=45] (C) let
\p2=(B),
\p1=(C),
\n2={veclen(\x2-\x1,\y2-\y1)}
in
rectangle (\n2,\n2);
\end{tikzpicture}
据我所知,我没有做错什么。但我得到的图片如下:
现在有更优雅的解决方案来解决这个问题,例如这里;但我想知道为什么我的代码没有达到预期的效果。
提前致谢!
答案1
托盘
\begin{tikzpicture}[scale=4]
\coordinate[label=200:$A$] (A) at (0,0) ;
\coordinate[label=120:$B$] (B) at (0,1) ;
\coordinate[label=right:$C$] (C) at (1,0) ;
\draw (A) -- (B) -- (C) -- cycle ;
\draw (A) rectangle (0.08,0.08);
\draw[red] (A) let% <---
\p1=(B),
\p2=(A),
\n1={veclen(\x2-\x1,\y2-\y1)}
in
rectangle +(-\n1,\n1);% <---
\draw[blue] (A) let% <---
\p1=(A),
\p2=(B),
\n2={veclen(\x2-\x1,\y2-\y1)}
in
rectangle +(\n2,-\n2);% <---
\draw[rotate=45] (C) let
\p2=(B),
\p1=(C),
\n3={veclen(\x2-\x1,\y2-\y1)}
in
rectangle + (\n3,\n3);% <---
\end{tikzpicture}
与您的 MWE 的差异由 `% <---% 指定。此代码提供:
注意:仅当第一个和第二个矩形的大小相同时,第三个矩形的旋转角度才是 45 度……
附录:
您的三角形有等边三角形,因此\n2
无需计算。较短的代码是:
\draw let \p1=(A),
\p2=(B),
\n1={veclen(\x2-\x1,\y2-\y1)} in
(A) rectangle +(-\n1,\n1)
(A) rectangle +(\n1,-\n1);