如何在 tikz l 系统中使用多个角度值?

如何在 tikz l 系统中使用多个角度值?

我需要有关 Tikz 的帮助lindenmayersystem。在此话题,JLDiaz 提出了一种使用以下命令绘制多种长度的线段的解决方案:

\symbol{S}{\pgflsystemstep=0.6\pgflsystemstep}

有没有办法对角度做同样的事情?我想使用 + 或 - 60 度旋转和 + 或 - 85 度旋转来绘制我的图形。

我试过了:

\documentclass[tikz]{standalone}
\usepackage{tikz}

\usetikzlibrary{lindenmayersystems}

\begin{document}

\begin{tikzpicture}
\pgfdeclarelindenmayersystem{mySystem}{
    \symbol{a}{\pgflsystemleftangle = 60}
    \symbol{b}{\pgflsystemrightangle = 60}
  \rule{X -> FaF+F-F-F+FbF}
}

\draw  [l-system={mySystem, step=10pt, angle=85, axiom=X, order=1}]
  lindenmayer system ;
\end{tikzpicture}

\end{document}

没有任何成功:“a”和“b”符号被忽略。

你能帮我吗?谢谢!

答案1

您需要使用\def\pgflsystemleftangle{60}\def\pgflsystemrightangle{60}(请注意,手册r中有几个地方的宏名称存在拼写错误和插入和额外内容)。您可以使用自定义宏同时设置它们,如下所示。请注意,角度在当前范围内保持不变。

\documentclass[tikz]{standalone}
\usepackage{tikz}

\usetikzlibrary{lindenmayersystems}
\def\pgflsystemsetangle#1{%
  \def\pgflsystemleftangle{#1}%
  \def\pgflsystemrightangle{#1}%
}
\begin{document}

\begin{tikzpicture}
\pgfdeclarelindenmayersystem{mySystem}{
    \symbol{a}{\pgflsystemsetangle{30}}
    \symbol{b}{\pgflsystemsetangle{60}}
    \symbol{c}{\pgflsystemsetangle{90}}
  \rule{X -> Fa+Fb+Fc+Fa-Fb-Fc-F}
}

\draw  [l-system={mySystem, step=10pt, angle=85, axiom=X, order=1}]
  lindenmayer system ;
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容