如何从 TikZ 很好地关闭林登迈尔曲线?

如何从 TikZ 很好地关闭林登迈尔曲线?

我想知道为什么闭合曲线在起始点和结束点处有奇怪的连接。我看到圆角影响了它,但在这种情况下如何获得漂亮的闭合曲线?

在此处输入图片描述

\documentclass[border=3pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{lindenmayersystems}

\pgfdeclarelindenmayersystem{Exemplo}{
\symbol{+}{\pgflsystemturnright}
\symbol{-}{\pgflsystemturnleft}
\rule{F -> F-F+F+F-F}
}

\begin{document}
\begin{tikzpicture}
\draw[line width=3pt,scale=7,
      lindenmayer system={Exemplo, axiom=F--F--F, order=1, angle=120}, 
      rounded corners=5pt] lindenmayer system -- cycle;
\draw[red] (0,0) circle (3pt);
\end{tikzpicture}
\end{document}

答案1

问题似乎是你已经移动到了最后一个原子的起点F。然后 tikz 显然拒绝正确关闭路径,因为它已经关闭。解决这个问题的一种方法是省略最后一个F原子。为此,可以引入一个截断规则,

\rule{G -> F-F+F+F-}

这与F规则的不同之处在于后面有F,或者更准确地说,没有 。此修复的缺点是您必须在增加顺序时小心谨慎,但至少在此示例中它确实有效。

\documentclass[border=3pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{lindenmayersystems}

\pgfdeclarelindenmayersystem{Exemplo}{
\symbol{+}{\pgflsystemturnright}
\symbol{-}{\pgflsystemturnleft}
\rule{F -> F-F+F+F-F}
\rule{G -> F-F+F+F-}
}

\begin{document}
\begin{tikzpicture}
\draw[line width=3pt,scale=7,
      lindenmayer system={Exemplo, axiom=F--F--G, order=1, angle=120}, 
      rounded corners=5pt] lindenmayer system -- cycle;
\draw[red] (0,0) circle (3pt);
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容