由等边三角形组成的六边形

由等边三角形组成的六边形

这是一个巧妙的问题!我想创建一个类似于下面的图表,但我一点也不知道该怎么做。Latex 对我来说很新,但我已经设法使用 Tikz 来绘制数字线和基本的换向图。任何答案都将不胜感激。

在此处输入图片描述

答案1

使用极坐标相对坐标很容易在三角网格中构建路径,例如:

\draw    (0,0) -- ++(0:1) -- ++(120:1) -- ++(0:1) -- 
    ++(-120:1) -- ++(0:1) -- ++(120:2);

(angle:distance)每个坐标都以相对于前一个坐标的形式给出(这就是++目的)。这将绘制路径:

简单路径

再次使用极坐标相对坐标,我们可以在战略位置添加一些“大点”:

\filldraw (0:0) circle(2pt) ++(0:2) ++(120:1) circle(2pt);

给予:

带点的简单路径

现在我们有了图形的基本构建块。只需重复六次,每次旋转 60 度。这是完整的代码:

\begin{tikzpicture}
\foreach \angle in {0,60,...,300} {
  \begin{scope}[rotate=\angle]
  \draw (0,0) -- ++(0:1) -- ++(120:1) -- ++(0:1) -- ++(-120:1)
        -- ++(0:1) -- ++(120:2);
  \filldraw (0:0) circle(2pt) ++(0:2) ++(120:1) circle(2pt);
  \end{scope}
}
\end{tikzpicture}

结果

再次使用极坐标可以轻松放置标签。这留给读者练习 ;-)

答案2

当然,将图表放入 TeX 文档的方法有很多种。下面是使用元帖子(如果感兴趣请点击链接)。

在此处输入图片描述

prologues := 3;
outputtemplate := "%j%c.eps";

beginfig(1);

r := 4cm;
path hexagon; 
hexagon = for theta = 0 step 60 until 359: right scaled r rotated theta -- endfor cycle;

draw hexagon;
for i = 0 upto 2: 
  draw point  i     of hexagon -- point  i+3   of hexagon; 
  draw point 2i+1/2 of hexagon -- point 2i+5/2 of hexagon;
  draw point 2i+3/2 of hexagon -- point 2i+7/2 of hexagon;
endfor

dotlabel.urt (btex $L_1-L_3$ etex, point  1/2 of hexagon);
dotlabel.top (btex $L_2-L_3$ etex, point  3/2 of hexagon);
dotlabel.ulft(btex $L_2-L_1$ etex, point  5/2 of hexagon);
dotlabel.llft(btex $L_3-L_1$ etex, point  7/2 of hexagon);
dotlabel.bot (btex $L_3-L_2$ etex, point  9/2 of hexagon);
dotlabel.lrt (btex $L_1-L_2$ etex, point 11/2 of hexagon);

fill fullcircle scaled 3; 
label("0",right scaled 10 rotated 30);

endfig;
end.

笔记:首先定义的是一个变量r半径。相对于一个关键维度定义绘图通常更容易。然后我们定义一个六边形路径;请注意 MP 如何让您for在任务中放置一个循环。

因为我们定义了六跳路径,所以它的长度为六个单位,我们可以使用该point x of path语法来引用我们需要的所有其他点。正如您所见,我们并不局限于整数。

dotlabel宏对于六个外部标签来说很方便,但由于网格的原因,原点的标签需要单独完成。

相关内容