我需要有关 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}