我想在六角星上以固定的距离放置小圆形标记。
但是有两个问题:pos=0.0
不在预期位置,但可能由于样式而略有偏移rounded corners
。我想在所有角上都放上小点,我该如何解决这个问题?
此外,还有一个额外的问题:当使用步长 0.013888 时,MWE 无法编译。但是,当使用步长 0.05 时,它确实可以编译。错误是:(Dimension too large
第 20 行)。
梅威瑟:
\documentclass[tikz]{standalone}
\usetikzlibrary{decorations.markings}
\begin{document}
\begin{tikzpicture}[
every node/.style={inner sep=0pt,outer sep=0pt,minimum width=0pt},
decoration={
markings,
mark=between positions 0 and 1.0 step 0.013888 with %
{\node[draw, circle, minimum width=1pt,anchor=center]{};}}]
\foreach \x in {0,1,...,5} {
\path (12,-3) ++(30+60*\x:3) coordinate (s\x);
\path (12,-3) ++(60*\x:1.7320508076) coordinate (si\x);
}
\draw[postaction={decorate},thick,rounded corners] (si0) -- (s0) -- %
(si1) -- (s1) -- (si2) -- (s2) -- (si3) -- (s3) -- (si4) -- (s4) -- %
(si5) -- (s5) -- cycle;
\end{tikzpicture}
\end{document}
答案1
我只是 tikz 新手,但我知道计算圆角的算法无法精确地穿过节点(下面用红色圆圈表示)。我画了两条路径来展示这一点,一条是黑色的圆角路径,另一条是红色的没有圆角但在每个节点上显示装饰(小圆圈)。
\documentclass[tikz]{standalone}
\usetikzlibrary{decorations.markings}
\begin{document}
\begin{tikzpicture}[
every node/.style={inner sep=0pt,outer sep=0pt,minimum width=0pt},
decoration={
markings,
mark=between positions 0.0 and 1.0 step 0.08333 with %
%% 0.08333 \approx 1/12
{\node[draw, circle, minimum width=3pt,anchor=center]{};}}]
\foreach \x in {0,1,...,5} {
\path (12,-3) ++(30+60*\x:3) coordinate (s\x);
\path (12,-3) ++(60*\x:1.7320508076) coordinate (si\x);
}
\draw[thick,rounded corners] (si0) -- (s0) -- %
(si1) -- (s1) -- (si2) -- (s2) -- (si3) -- (s3) -- (si4) -- (s4) -- %
(si5) -- (s5) -- cycle;
\draw[postaction={decorate}, color=red] (si0) -- (s0) -- %
(si1) -- (s1) -- (si2) -- (s2) -- (si3) -- (s3) -- (si4) -- (s4) -- %
(si5) -- (s5) -- cycle;
\end{tikzpicture}
\end{document}
答案2
不使用decorations.markings
,只是为了好玩:-)
\documentclass[tikz, margin=3mm]{standalone}
\begin{document}
\begin{tikzpicture}[
dot/.style = {circle, draw, semithick,
inner sep=0pt, minimum size=3pt,
node contents={}},
]
\foreach \x in {0,1,...,5}
{
\path (30+60*\x:3) coordinate (s\x) ++ (30+60*\x:-2pt) node [dot];
\path (60*\x:1.73) coordinate (si\x) ++ (60*\x:+1pt) node [dot];
}
\draw[semithick,rounded corners=4pt]
(si0) -- (s0) -- (si1) -- (s1) -- (si2) -- (s2) -- (si3)
-- (s3) -- (si4) -- (s4) -- (si5) -- (s5) -- cycle;
\end{tikzpicture}
\end{document}