数学図形(インボリュート曲線、直線描画)
説明
数式にしたがってインボリュート曲線を描きます。このプログラムでは、よりきれいに曲線を描画するため計算した点同士を直線で結ぶようにしています。
Studioで試す
以下のリンクから Jasmine Tea でこのサンプルプログラムを Studio 画面で開いて実際に試すことができます。プログラムを実行したいときは、エディターの右下にある青色の「実行」ボタンを押してください。
プログラム
// 数学図形(インボリュート曲線。直線描画)
cls
cx=320
cy=200
a=7
oldX=-1
oldY=-1
for t=0 to 360*10 step 10
s=t*pi()/180
x=cx+(a*cos(t)+s*sin(t))*2
y=cy-(a*sin(t)-s*cos(t))*2
if oldX<>-1 then
line (oldX,oldY)-(x,y),7
end if
oldX=x
oldY=y
next
解説
2行目で画面を消去しています。
3行目で図形の中心X座標を変数に入れています。
4行目で図形の中心Y座標を変数に入れています。
5行目で変数に値を入れています。
6行目で直線を描画する際の開始点のX座標の初期値を入れています。まだ、1回も直線を描画していないことを示す値である-1を入れています。特に-1である必要はありませんが、グラフィック画面のX座標(0〜639)以外にする必要があります。
7行目で直線を描画する際の開始点のY座標の初期値を入れています。まだ、1回も直線を描画していないことを示す値である-1を入れています。特に-1である必要はありませんが、グラフィック画面のY座標(0〜399)以外にする必要があります。
8〜17行までが繰り返し処理です。10周分繰り返すので360度×10を指定しています。step 10としているのは直線で描画する間隔で、より大きい値にすると描かれる図形は直線的になります。
9行目で角度をラジアンに変換しています。角度からラジアンに変換する計算式は「角度×π÷180」です。
10行目でX座標を計算しています。
11行目でY座標を計算しています。
12行目で直線で描画すべきかどうかを判断しています。-1以外なら以後の行が実行され直線で描画します。
13行目で1つ前の座標と計算した座標を直線で描画します。
15行目で計算したX座標を変数に入れています。これが次に直線を描画する際の1つ前のX座標値となります。
16行目で計算したY座標を変数に入れています。これが次に直線を描画する際の1つ前のY座標値となります。