正n角形を表示する

説明

グラフィック画面上に正n角形(正三角形や正五角形、正六角形など)を表示します。

正n角形を描くにはn個の座標点を線で結びます。プログラムでは円周上の座標点を計算することで正n角形を表示しています。円周上の座標点を求める際には以下の計算式を使用しています。なお、正弦はsin、余弦はcosで求めることができます。いずれも指定する値は角度となっています。(ラジアンではありません)

X座標=n角形の中心座標+cos(角度)×半径

Y座標=n角形の中心座標+sin(角度)×半径

n角形の場合、円周上の点の角度は360÷nとなります。三角形なら360÷3=120度に、正六角形なら360÷6=60度になります。この角度ごとに上記の計算式を使って円周上の座標を求め、それぞれを結べば正n角形を描くことができます。

Studioで試す

以下のリンクから Jasmine Tea でこのサンプルプログラムを Studio 画面で開いて実際に試すことができます。プログラムを実行したいときは、エディターの右下にある青色の「実行」ボタンを押してください。

Studio で開く

プログラム

// 正n角形を表示する
cls
centerX=320
centerY=200
r=180
input "角の数を教えてください";n
for i=0 to n
  d=i*360/n
  nx=centerX+cos(d)*r
  ny=centerY+sin(d)*r
  if i>0 then
    line (x,y)-(nx,ny),7
  end if
  x=nx
  y=ny
next

解説

2行目で画面を消去しています。

3行目でn角形の中心X座標を、4行目でn角形の中心Y座標を指定しています。

5行目でn角形の大きさ(半径)を指定しています。

6行目が描くn角形のnです。input命令を使って、角の数を入力しています。6が指定されると六角形が描かれることになります。20にすると正20角形が描かれます。いろいろな数字にしてどう描かれるか確認してみてください。

7行目ではn角形を線で結ぶためにn+1回繰り返し処理を行うように指定しています。

8行目でcos,sinに渡す角度を計算しています。n角形の場合は360度÷nとなります。

9行目で円周上のX座標を計算しています。

10行目で円周上のY座標を計算しています。

11〜13行目では始点以外の場合に線を表示しています。このようにしないと変な場所からn角形の始点に線が表示されてしまいます。ifを使って判断したくない場合にはあらかじめ始点の座標を計算しておくという方法もあります。96角形など数多く線を表示する必要がある場合や高速に表示する場合にはあらかじめ始点だけ計算し繰り返し回数を減らすほうがよいかもしれません。

14行目と15行目では計算した座標を変数x,yに入れています。これにより古い座標がX,Yとなり、新たに計算される座標nx,nyまで線が表示されるようになります。