\newcommand{\length}{4}
\newcommand{\width}{4}
\begin{tikzpicture}
%Coordinates for square
\coordinate (O) at (0,0);
\coordinate (A) at (\length,0);
\coordinate (B) at (0,\width);
\coordinate (C) at (\length,\width);
%Drawing square
\draw (O) -- (A) -- (C) -- (B) -- cycle;
\foreach \x in {0.1,4.1}{
\foreach \y in {\width-0.1, -0.1}{
\draw (\x,\y) -- (\x,\y-1.2) -- (\x+0.4,\y-1.2+0.9) -- cycle;
}
}
\foreach \x in {0.1,\length + 0.1}{
\foreach \y in {- 0.1, \width - 0.1}{
\draw (\x,\y) -- (\x+1.2,\y) -- (\x+1.2-0.9,\y-0.4) -- cycle;
}
}
\end{tikzpicture}
这是我用来绘制两个相似三角形的代码,如图所示。但两个三角形重叠(略微),这是不应该发生的。我该怎么办?
答案1
我将其作为答案发布,因为它太长,不适合发表评论。您的三角形重叠,因为每个蓝色三角形的第三个坐标不是相应红色三角形的第三个坐标。然后,您必须将 更改0.4
为0.3
。
此外,我擅自清理了代码,并建议修改如何绘制三角形。事实上,通过单独绘制它们,您最终会在每个三角形的左上角出现一个突起(问题图片中存在)。然后,我建议先填充三角形,然后绘制包围形状:
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\newcommand{\length}{4}
\newcommand{\width}{4}
\begin{tikzpicture}
% Draw square if coordinates are needed, which is not the case here
% \draw (0, 0) coordinate (O)
% -- ++ (\length, 0) coordinate (A)
% -- ++ (0, \width) coordinate (C)
% -- ++ (-\length, 0) coordinate (B)
% -- cycle;
% Draw square simply
\draw (0, 0) rectangle (\length, \width);
\foreach \x in {0, \length}{
\foreach \y in {\width, 0}{
% Draw blue triangles
\fill[blue] (\x + 0.1, \y - 0.1) -- ++ (0, -1.2) -- ++ (0.3, 0.9) -- cycle;
% Draw red triangles
\fill[red] (\x + 0.1, \y - 0.1) -- ++ (1.2, 0) -- ++ (-0.9, -0.3) -- cycle;
% Draw shape around
\draw (\x + 0.1, \y - 0.1) -- ++ (1.2, 0) -- ++ (-0.9, -0.3) -- ++ (-0.3, -0.9) -- cycle;
% Draw line separating the triangles
\draw (\x + 0.1, \y - 0.1) -- ++ (0.3, -0.3);
}
}
\end{tikzpicture}
\end{document}
得出的结果是: