SVX日記
2017-12-07(Thu) タートルグラフィックスを実装
先日に引き続き、ちょっとした用途のため、自製グラフィックライブラリにタートルグラフィックスの関数を追加することにした。習作として、フラクタル図形を描画するプログラムも書いてみる。やり始めたら極めてアッサリと、併せて数時間でできてしまった。
def c_curve(win, n, l)
unless(n == 0)
win.tLeft(45)
c_curve(win, n - 1, l)
win.tRight(90)
c_curve(win, n - 1, l)
win.tLeft(45)
else
win.tForward(l)
end
end
win.tHome
win.tRight(90)
c_curve(win, 12, 4)
def r_dragon(win, n, l)
unless(n == 0)
win.tLeft(45)
r_dragon(win, n - 1, l)
win.tRight(90)
l_dragon(win, n - 1, l)
win.tLeft(45)
else
win.tForward(l)
end
end
def l_dragon(win, n, l)
unless(n == 0)
win.tRight(45)
r_dragon(win, n - 1, l)
win.tLeft(90)
l_dragon(win, n - 1, l)
win.tRight(45)
else
win.tForward(l)
end
end
win.tHome
win.tRight(90)
r_dragon(win, 12, 4)
def tree(win, n, l)
unless(n == 0)
win.tSetPenWidth(n * 2)
win.tForward(l)
win.tRight(25)
tree(win, n - 1, l / 1.5)
win.tLeft(55)
tree(win, n - 1, l / 1.3)
win.tRight(30)
win.tBack(l)
else
win.tForward(l)
win.tBack(l)
end
end
win.tHome
tree(win, 7, 96)