尝试绘制勾股三角形的奇怪行为

尝试绘制勾股三角形的奇怪行为

我正在尝试绘制一个直角三角形,其边上有正方形,以说明毕达哥拉斯定理。这是我的代码

    \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);

相关内容