火曜日, 5月 09, 2006

boxの次はやっぱりcircleメソッド

boxコマンドのようなものがが使えれば、circleコマンドも欲しくなる。

前にpsetコマンドを使って円を描いてみたのだが、これだと点の間がつながらない。そこでlineメソッドと同じ方法で点の間を線で結ぶという方法を考えてみた。

使い方はこうだ。

描画! (中心のx座標)(中心のy座標)(半径)(表示色)(線の太さ) circle

円の周りに円を描くスピログラフというのがある。circleメソッドのテストに、このスピログラフを作ってみる。

//circleメソッドテスト(SpiroGraph-1)

描画:circle=[|x y r color size|
 f=6. d=0. [d<360]!の間[タートル! 作る (size)線の太さ 消える ペンなし (r*cos(d)+x)(r*sin(d)+y)位置 ペンあり (r*cos(d+f)+x)(r*sin(d+f)+y)位置 図形にする (color)塗る. d=d+f]実行
].

半径=100.
角度=0.
[角度<360]!の間[
 x=半径*cos(角度).
 y=半径*sin(角度).
 描画! (x)(y)(半径*0.5)(青)(1) circle.
 角度=角度+10
]実行.

//--------- ここまで ----------



//circleメソッドテスト(SpiroGraph-2)

描画:circle=[|x y r color size|
 f=6. d=0. [d<360]!の間[タートル! 作る (size)線の太さ 消える ペンなし (r*cos(d)+x)(r*sin(d)+y)位置 ペンあり (r*cos(d+f)+x)(r*sin(d+f)+y)位置 図形にする (color)塗る. d=d+f]実行
].

半径=100.
角度=0.
[角度<360]!の間[
 x=半径*cos(角度).
 y=半径*sin(角度).
 描画! (x)(y)(半径*random(10)/5)(赤)(1) circle.
 角度=角度+60
]実行.

//--------- ここまで ----------