업데이트

업데이트

라이브러리 를 사용하여 TikZ에서 L 시스템을 만들려고 합니다 lindenmayersystems.

나는 이 코드를 가지고 있습니다 :

\documentclass[border=1cm]{standalone}
\usepackage{tikz}
\usetikzlibrary{lindenmayersystems}
\pgfdeclarelindenmayersystem{A}{
\rule{A->F[+A][-A]}
}
\begin{document}
\begin{tikzpicture}[scale=10,rotate=90]
\draw
    [blue,opacity=0.5,line width=0.5cm,line cap=round]
    l-system [l-system={A,axiom=A
    ,order=4,angle=45,step=0.25cm}];
\end{tikzpicture}
\end{document}

이 코드는 다음과 같은 출력을 생성합니다.

그런데 보시다시피 나무의 윗가지들이 서로 닿아 있습니다. 나는 이런 일이 일어나는 것을 원하지 않습니다. 다음 위키피디아 이미지처럼 모든 단계에서 줄의 크기를 줄여야 합니다.

TikZ에서 이 작업을 수행할 수 있는 방법이 있나요?

답변1

F한 가지 해결책은 의 값을 줄이는 방식으로 기호를 정의하는 것입니다 \pgflsystemstep. 즉,

\pgfdeclarelindenmayersystem{A}{
  \symbol{F}{\pgflsystemstep=0.6\pgflsystemstep\pgflsystemdrawforward}
  \rule{A->F[+A][-A]}
}

다음을 제공합니다.

결과

위 그림의 전체 코드는 다음과 같습니다.

\documentclass{article}
\usepackage{tikz}
\usepackage[active,tightpage]{preview}\PreviewEnvironment{tikzpicture}
\usetikzlibrary{lindenmayersystems}
\pgfdeclarelindenmayersystem{A}{
\symbol{F}{\pgflsystemstep=0.6\pgflsystemstep\pgflsystemdrawforward}
\rule{A->F[+A][-A]}
}
\begin{document}
\foreach \n in {1,...,8} {
\begin{tikzpicture}[scale=10,rotate=90]
\draw (-.1,-.2) rectangle (.4,0.2);
\draw
    [blue,opacity=0.5,line width=0.1cm,line cap=round]
    l-system [l-system={A,axiom=A
    ,order=\n,angle=45,step=0.25cm}];
\end{tikzpicture}
}

\end{document}

업데이트

더 나은 해결책: S배율을 변경하지만 아무것도 그리지 않는 새 기호(예: "배율")를 정의합니다. 장점은 규칙의 어느 부분에서나 사용할 수 있다는 것입니다.

이 접근 방식을 사용하면 다음과 같은 예가 됩니다.

\pgfdeclarelindenmayersystem{A}{
  \symbol{S}{\pgflsystemstep=0.6\pgflsystemstep}
  \rule{A->SF[+A][-A]}
}

규칙의 일부에서 "크기 조정"이 어떻게 사용될 수 있는지 보여주는 또 다른 예는 다음과 같습니다.

\pgfdeclarelindenmayersystem{A}{
  \symbol{S}{\pgflsystemstep=0.5\pgflsystemstep}
  \rule{A->F[+A][-A]SA}
}

이는 다음과 같이 사용되었습니다.

\foreach \n in {1,...,6} {
\begin{tikzpicture}[scale=10,rotate=90]
\draw (-.03,-.17) rectangle (.35,0.17);
\draw
    [blue,opacity=0.5,thin,line cap=round]
    l-system [l-system={A,axiom=A
    ,order=\n,angle=15,step=0.05cm}];
\end{tikzpicture}
}

생산하다

두 번째 예

관련 정보