在数学课上,我正在学习写数学论文。这其实是一门有趣的课。它就像一门有意义的英语课。在我们写的关于多面体的论文中,我写了一个证明,解释了为什么只有 5 个柏拉图立体,然后还提供了一个图形证明。我的图形证明涉及 3 个六边形在一个共同的顶点相交。在写文档时,我徒劳地试图找到我需要的东西,所以我“强行”了它,这已经足够了。然而,一定有更好的方法。请考虑下面的最小、可行的示例,并让我知道更好的方法。我将不得不突破我的 tikz 极限来完成期末论文,这将需要一个直角三角形,直角三角形的边上有等边三角形。一些繁重的 tikz 等待着我。
安迪
\documentclass{article}
\usepackage{gensymb}
\usepackage{tikz}
\usetikzlibrary{angles, calc, quotes, shapes.geometric}
\usepackage[utf8]{inputenc}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\node[draw, minimum size=3cm,regular polygon,regular polygon sides=6] (a) {};
\node[draw, minimum size=3cm,regular polygon,regular polygon sides=6] (b) at (0,2.6cm) {};
\node[draw, minimum size=3cm,regular polygon, regular polygon sides=6] (c) at (2.26cm,1.29cm) {};
\draw (a.corner 1) circle (1cm);
\draw (0,0) -- (a.corner 1) (0,0) -- (a.corner 6);
\draw (.33cm,0) arc (0:60:.33cm) node[right] {$60\degree$};
\end{tikzpicture}
\end{figure}
\end{document}
渲染结果如下。虽然很微妙,但右侧的六边形与堆叠的两个六边形并不完全对齐。
答案1
这个更准确一些。改成独立模式只是为了省去我裁剪图片的麻烦。
\documentclass{standalone}
\usepackage{gensymb}
\usepackage{tikz}
\usetikzlibrary{angles, calc, quotes, shapes.geometric}
\usepackage[utf8]{inputenc}
\begin{document}
%\begin{figure}
%\centering
\begin{tikzpicture}[every node/.style={outer sep=-0pt}]
\node[draw, minimum size=3cm,regular polygon,regular polygon sides=6] (a) {};
\node[draw, minimum size=3cm,regular polygon,regular polygon sides=6,anchor=corner 5] (b) at (a.corner 1) {};
\node[draw, minimum size=3cm,regular polygon, regular polygon sides=6,anchor=corner 3] (c) at (a.corner 1) {};
\draw (a.corner 1) circle (1cm);
\draw (0,0) -- (a.corner 1) (0,0) -- (a.corner 6);
\draw (.33cm,0) arc (0:60:.33cm) node[right] {$60\degree$};
\end{tikzpicture}
%\end{figure}
\end{document}
答案2
我认为将六边形相对于圆心放置会更容易,圆心在(0,0)
。然后我们可以使用极坐标来放置六边形,而不需要计算它们的高度等。
[如果这是较大图表的一部分,则可以使用相对极坐标将它们放置在原点以外的点周围。]
\foreach \i [count=\j] in {0,120,240} \node (h\j) [my hexagon] at (\i:15mm) {};
我使用了循环,但\node
如果愿意,我们也可以使用 3 个命令。my hexagon
是一种更容易确保一致和灵活的格式的样式。
\tikzset{%
my hexagon/.style={draw, minimum size=3cm, regular polygon, regular polygon sides=6},
}
然后圆也在原点处画出来。
\draw circle (10mm);
然后我们可以画出角度的线并标记和标注该角度。
我会使用angles
库,因为您正在加载它。我们将坐标命名为A
,B
并且C
由于angle
代码将默认使用这些坐标,因此我们不妨让自己轻松一些。angle radius
是绘制角度的半径。是相对于标签的angle eccentricity
距离。也就是说,标签文本有时会为,即从。angle radius
B
2.1
2mm
4.2mm
B
\draw (h3.corner 6) coordinate (A) -- (h3.center) coordinate (B) -- (0,0) coordinate (C) pic ["$60\degree$", draw, angle eccentricity=2.1, font=\scriptsize, angle radius=2mm] {angle};
[我调整了尺寸,使角度标记稍微小一些,以避免与圆圈发生冲突,但显然可以根据需要进行调整。]
这样我们的六边形就排列得非常整齐了。
完整代码:
\documentclass[tikz,border=10pt,multi]{standalone}
\usepackage{gensymb}
\usetikzlibrary{angles,quotes,shapes.geometric}
\usepackage[utf8]{inputenc}
\begin{document}
\tikzset{%
my hexagon/.style={draw, minimum size=3cm, regular polygon, regular polygon sides=6},
}
\begin{tikzpicture}
\foreach \i [count=\j] in {0,120,240} \node (h\j) [my hexagon] at (\i:15mm) {};
\draw circle (10mm);
\draw (h3.corner 6) coordinate (A) -- (h3.center) coordinate (B) -- (0,0) coordinate (C) pic ["$60\degree$", draw, angle eccentricity=2.1, font=\scriptsize, angle radius=2mm] {angle};
\end{tikzpicture}
\end{document}