ノード書き換え型のL-System

前ポスト「エッジ書き換え型」のL-Systemにつづき、Figure 1.13, Figure 1.16で紹介されるノード書き換え型です。

Figure 1.16 a は以下のように書けます。

s = "-L"
for i in range(int(x)):
    s = rewrite(s,'L',"lF+rFr+Fl-F-lFlFl-FrFr+")
    s = rewrite(s,'R',"-lFlF+rFrFr+F+rF-lFl-Fr")
    print s
    s = s.replace('l','L')
    s = s.replace('r','R') 

a = s

‘L’,’R’を使って仮置き換えする考え方はエッジ書き換え型と同じです。最後に’L’,’R’を’F’に置き換えない!というところがポイントです。あるいはあえて8行目に以下のコードを挟み、

s = s.replace('L','')
s = s.replace('R','')

と明示的に消去するのも、意図としては正しいです。ちなみに Figure 1.16 b の書き換えルールは以下赤部分間違っています(赤部分’R’と’F’が逆)。

tile_ptn_revise

Comments are closed.