具有圆角和装饰的 TikZ 路径。标记未按预期工作(pos=0.0 在错误位置)

具有圆角和装饰的 TikZ 路径。标记未按预期工作(pos=0.0 在错误位置)

我想在六角星上以固定的距离放置小圆形标记。

但是有两个问题: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}

在此处输入图片描述

相关内容