L-systemで植物の成長モデルが描ける。木には枝があり、枝分かれがある。一筆書きのみではなく、枝分かれに対応する。
新たに追加する文字
新たに2つの文字を追加する。
| 文字 | 説明 |
| [ | 現在位置のx座標、y座標、方向を記憶する |
| ] | 前回保存したx座標、y座標、方向の位置まで、線を描かずに移動する |
新たに必要になるタートルグラフィックスコマンドは以下の通り
| 命令 | 意味 |
| mode() | タートルのモード(“standard”, “logo”, “world” のいずれか)を設定 “standard”:右 (東) 向き 反時計回り “logo”:上 (北) 向き 時計回り “world” はユーザーの定義した「世界座標(world coordinates)」 |
| position() | 現在座標を返す |
| heading() | 現在の方向を返す |
| setposition(x,y) | 座標x,yに移動 |
| setheading(角度) | 角度で指定した方向を向く |
pythonコード
import turtle
turtle.mode("logo")
t = turtle.Turtle()
omega = "F"
P = {"F":"F[+F][-F]"}
repeat = 1
distance = 30
angle = 45
stack = []
def turtle3(com):
if com == "F":
t.forward(distance)
if com == "+":
t.right(angle)
if com == "-":
t.left(angle)
if com == "[":
stack.append([t.position(),t.heading()])
print(stack)
if com == "]":
t.penup()
s = stack.pop()
t.setposition(s[0])
t.setheading(s[1])
t.pendown()
result = omega
for i in range(repeat):
result = result.translate(str.maketrans(P))
for x in result:
turtle3(x)
turtle.done()
できた図は以下の通り。”logo”:上 (北) 向き 時計回り にセットしていることに注意。

F→F[+F][-F]なので
- 前進する
- 現在場所、方向を記憶
- 右45度を向く
- 前進する
- 記憶した場所、方向に移動
- 左45度を向く
- 前進する
- 記憶した場所、方向に移動
となり、結果上記の形になる。
例えば、以下のように設定した場合
omega = "F"
P = {"F":"FF[+F-F][-F]F"}
repeat = 3
angle = 25
以下が結果


