如何在 tikz 中对齐节点/形状

如何在 tikz 中对齐节点/形状

在数学课上,我正在学习写数学论文。这其实是一门有趣的课。它就像一门有意义的英语课。在我们写的关于多面体的论文中,我写了一个证明,解释了为什么只有 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库,因为您正在加载它。我们将坐标命名为AB并且C由于angle代码将默认使用这些坐标,因此我们不妨让自己轻松一些。angle radius是绘制角度的半径。是相对于标签的angle eccentricity距离。也就是说,标签文本有时会为,即从。angle radiusB2.12mm4.2mmB

  \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}

相关内容