答案1
以下是我制作基本形状的方法,我将标签留给您。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[thick]
\draw (0, 0) rectangle (8, 8);
\node[rotate=34.8, minimum size=2cm] (S) at (4, 4) {};
\draw (0, 0) -- (S.south east);
\draw (0, 8) -- (S.south west);
\draw (8, 0) -- (S.north east);
\draw (8, 8) -- (S.north west);
\end{tikzpicture}
\end{document}
它的工作原理如下。首先绘制外框。然后S
在中间绘制一个节点,默认节点形状为正方形。将此节点的角连接到外正方形的角,但逆时针旋转一个角,这样外框的左上角就到达内框的左下角,等等。然后旋转节点。有两种方法可以做到这一点,反复试验,尝试角度直到一切都排列整齐,或者数学。
数学,适合那些对数学感兴趣的人
设为d
内盒边长,c
为外盒边长。
然后查看图表,我们看到d = a - b
将其a
作为三角形两个非斜边中较长的一边。
然后我们观察这些三角形,注意到左下方从水平线到近对角线的角度与内侧正方形的角度相同,将此角度称为theta
。
应用三角学的定义,我们知道b/c = sin(theta)
和a/c = cos(theta)
。因此(b - a)/c = sin(theta) - cos(theta) = d/c
。
因为d
和c
已知(我任意选择了 8 厘米和 2 厘米),我们只需要找到theta
,这可以用三角恒等式来完成,或者像我一样,询问 wolfram alpha。它给出的答案不一定立即正确,例如,我必须减去 180 度才能得到 34.8 度的答案。
答案2
您的问题标题要求使用 LaTeX 解决方案,因此让我提出一种使用 MetaPost ❤️ 的替代方案:
\documentclass{standalone}
\usepackage[latex,shellescape]{gmp}
%#1 size, #2 angle
%(the triangle will have #2/2 as its least angle)
\newcommand\Bhaskara[2]%
{\begin{mpost}[name=bhaskara]
vardef Bhaskara(expr u, v) =
image(
for i = 1 upto 4:
%Triangles in a semi-circle are right-angled
draw (right -- dir v -- left -- cycle)
%So right angles are inner to the square
reflectedabout(left,right)
%Triangles at each side
rotated (90i-90) shifted (dir 90i)
scaled (u/2);
endfor
)
enddef;
draw Bhaskara(\the\dimexpr#1\relax,\the\numexpr#2\relax);
\end{mpost}\usempost{bhaskara}}
\begin{document}
\Bhaskara{2cm}{15}
\Bhaskara{2cm}{30}
\Bhaskara{2cm}{45}
\Bhaskara{2cm}{60}
\Bhaskara{2cm}{75}
\end{document}
答案3
还有另一种 tikz 方法,参数化并绘制“仅一条线”。
\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[line join=round]
% Triangle information
\def\b{4} % catheti, b>c
\def\c{3}
\pgfmathsetmacro\B{atan(\c/\b)} % acute angle
\pgfmathsetmacro\a{sqrt(\b*\b+\c*\c)} % hypotenuse
\foreach\i in {0,90,180,270}
{%
\begin{scope}[rotate=\i, shift={(-0.5*\a,-0.5*\a)}]
\draw (0:\a) -- (0,0) -- (\B:\b);
\end{scope}
}
\end{tikzpicture}
\end{document}
答案4
还有另一种 TikZ 方法,使用 s 的几何变换pic
,也只需一个命令\path
。
\documentclass[tikz,border=5mm]{standalone}
\begin{document}
\begin{tikzpicture}[join=round,declare function={c=2;},
righttriangle/.pic={\draw[magenta] (180:c)--(0:c)--(70:c)--cycle;}]
\path
(0,0) pic{righttriangle}
(0,2*c) pic[scale=-1]{righttriangle}
(0,0) pic[shift={(c,c)},rotate=90]{righttriangle}
(0,0) pic[shift={(-c,c)},rotate=-90]{righttriangle};
\end{tikzpicture}
\end{document}