先回の最後に出した課題です。3次元的に均等になるように枝を分岐させる方法です。
様々な方法がありえると思いますが、ひとつの例です。
‘/’:z軸を中心に回転させる文字
‘.’:ベクトルをリセットさせる文字
を割り当てると比較的簡単に作れそうです。
generate 関数に’/’ と ‘.’ の変換機能を追加します。 ’+’と’-‘の後の行 33行目あたり
elif ptn[i] == '/': angle2 = 100 rg.Vector3d.Rotate(v,math.radians(angle2),rg.Vector3d(0,0,1)) elif ptn[i] == '.': v = rg.Vector3d(0,0,1)
を追加。angle2 はスライダーにすると良いでしょう。
文字の書き換えパターンとしては、
.+/F : ベクトルをリセットし. 右にangle分傾けて+ z軸でangle2分回転し/ 線をベクトル長さ分引くF
2分岐であれば: [.+F].+/F]
3分岐であれば: [[.+F].+/F].+//F]
4分岐であれば: [[[.+F].+/F].+//F].+///F]
を書き換えていけばうまくいきそうです。/ の数が増えているのに留意。
s = 'F' for i in range(int(x)): s = func(s,'F','F[[[.+F].+/F].+//F]')
Comments are closed.