答案1
答案2
只是为了好玩,使用不同的输入语法。
代码
\documentclass[tikz]{standalone}
\usetikzlibrary{shapes.geometric}
\tikzset{
hexa setup/.style 2 args={
x=(#2:.86602540378*#1), y=(60+#2:.86602540378*#1),
hexa node/.style={
shape=regular polygon, regular polygon sides=6, draw,
rotate=30+#2, minimum size=#1, inner sep=+0pt},
Hexa/.style={/tikz/insert path={node[hexa node,##1]{}}}},
hexa/.code=\pgfqkeys{/tikz/hexa}{#1},
hexa={
h/.style={/tikz/Hexa},0/.style={/tikz/Hexa},
/utils/temp/.style args={#1/#2/#3}{#1/.style={
/tikz/insert path={-- ++(#2,#3)},/tikz/Hexa}},
/utils/temp/.list={1/1/0, 2/0/1, 3/-1/1, 4/-1/0, 5/0/-1, 6/1/-1}}}
\begin{document}
\begin{tikzpicture}[hexa setup={1cm}{0}]
\draw[help lines] foreach \dir in {1,...,6}{(0,0) [hexa/\dir] node{\dir}};
\draw[inner sep=0pt, <->] (0,1) -- (0,0) -- (1,0);
\end{tikzpicture}
\tikz[hexa setup={1cm}{30}]\path[hexa={h,5,5}];
\tikz[hexa setup={1cm}{45}]\path[hexa={h,1,2}];
\tikz[hexa setup={1cm}{ 0}]\path[hexa={h,1,3}];
\end{document}
输出
答案3
这是一种使用的可能性chains
。
要制作链条,请从 开始\begin{tikzpicture}[hexchain]
。如果您希望六边形的顶点位于顶部(而不是侧面),请使用hexchain=30
。您可以使用任何您想要的角度。
然后使用\node[myhex, <tikz options>]{<label>}
开始链。标签和任何其他 tikz 选项都是可选的。后续节点应使用 放置\node[myhex=<angle>, <tikz options>]{<label>};
,其中<angle>
是从上一个节点的方向。
六边形的尺寸由 全局控制\circdiam
。
以下是生成图像的代码:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{chains, shapes.geometric}
\tikzset{hexchain/.style={start chain, node distance=-\pgflinewidth, shape border rotate=#1},
hexchain/.default={0},
myhex/.style={regular polygon, regular polygon sides=6, draw, minimum size=\circdiam cm,
on chain=going {at=(\tikzchainprevious),shift=(#1:{\circdiam*sqrt(3)/4})}},
myhex/.default={}}
\newcommand{\circdiam}{1} % diameter of circumcircle in cm
\begin{document}
\begin{tikzpicture}[hexchain]
\node[myhex]{1};
\node[myhex=-90]{2};
\node[myhex=-30]{3};
\node[myhex=210]{4};
\end{tikzpicture}\qquad
%
\begin{tikzpicture}[hexchain=30]
\node[myhex, fill=blue!30]{};
\node[myhex=-60, fill=red!30]{};
\node[myhex=-120, fill=yellow!30]{};
\node[myhex=0, fill=green!30]{};
\end{tikzpicture}
\end{document}
答案4
从中得到了一个想法回答:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes}
\begin{document}
\begin{tikzpicture}
\begin{scope}[%
every node/.style={anchor=west,
regular polygon,
regular polygon sides=6,
draw,
minimum width=2cm,
outer sep=0,
}, transform shape]
\node (A) {A};
\node (B) at (A.corner 1) {};
\node (C) at (B.corner 5) {};
\node (D) at (A.corner 5) {};
\node (E) at (D.corner 5) {};
\node (F) at (A.side 2)[yshift=-150pt]{};
\node (G) at (F.corner 3)[yshift=-50pt]{};
\node (H) at (G.corner 3)[yshift=-50pt]{};
\end{scope}
\end{tikzpicture}
\end{document}