next up previous
Next: 2.1.2 素朴に星形 Up: 2.1 頂点の座標を計算で求める方法 Previous: 2.1 頂点の座標を計算で求める方法

2.1.1 まずは正五角形から

まず、正五角形を描くことを考えましょう。 与えられた自然数 $ n$ に対して、 円周を $ n$ 等分する点の座標を表す式は、 あちこちで習っていますね。 一周 $ 2\pi$ $ n$ 等分した角は $ \dfrac{2\pi}{n}$ ですから、

$\displaystyle \theta_k:=\frac{2\pi k}{n}$   $\displaystyle \mbox{($k=0,1,\cdots,n-1$)}$

として、

$\displaystyle x_k:=r\cos\theta_k,\quad y_k:=r\sin\theta_k$   $\displaystyle \mbox{($k=0,1,\cdots,n-1$)}$

とおくと、$ (x_k,y_k)$ ( $ k=0,1,\dots,n-1$ ) は、 原点を中心とする半径 $ r$ の円周の $ n$ 等分点を与えます。

簡単のため $ r=1$ として、 また角度が分かりやすいように (?) 単位を度で表すことにして、 点の番号を 0 からでなく $ 1$ から振ることにして、 また頂点をずらす角度 $ \phi=90^\circ$ を導入して (真上に頂点が来ると星がきれい)

      $\displaystyle \theta_j:=\frac{360^\circ}{n}(j-1)$   $\displaystyle \mbox{($j=1,2,\cdots,n$)}$$\displaystyle ,$
      $\displaystyle x_j:=\cos\left(\theta_j+\phi\right),\quad y_j:=\sin\left(\theta_j+\phi\right)$   $\displaystyle \mbox{($j=1,2,\cdots,n$)}$

とおきます (ここらへんは好みの問題で、どうでも良いです)。

次のプログラムで正五角形の輪郭が描けます。

REM 正五角形を描く
OPTION ANGLE DEGREES
LET n=5
LET DT=360/n
LET p=90
REM 頂点の座標を求める
DIM x(n),y(n)
FOR j=1 TO n
   t=(j-1)*DT+p
   PRINT t
   LET x(j)=COS(t)
   LET y(j)=SIN(t)
NEXT j
REM 正五角形を描く
SET WINDOW -1,1,-1,1
FOR j=1 TO n
   PLOT LINES : x(j),y(j);
NEXT j
PLOT LINES : x(1),y(1)
END

正五角形の内部を塗るのは簡単で、 最後 (END行の前) に次の2行を加えるだけです。
SET AREA COLOR "red"
MAT PLOT AREA : x,y

pentagon.BAS

REM pentagon.BAS --- 正五角形を描く
OPTION ANGLE DEGREES
LET n=5
LET DT=360/n
LET p=90
REM 頂点の座標を求める
DIM x(n),y(n)
FOR j=1 TO n
   LET t=(j-1)*DT+p
   PRINT t
   LET x(j)=COS(t)
   LET y(j)=SIN(t)
NEXT j
REM 頂点を順に結んで正五角形を描く
SET WINDOW -1,1,-1,1
FOR j=1 TO n
   PLOT LINES : x(j),y(j);
NEXT j
PLOT LINES : x(1),y(1)
REM 塗る
SET AREA COLOR "red"
MAT PLOT AREA: x,y
END


next up previous
Next: 2.1.2 素朴に星形 Up: 2.1 頂点の座標を計算で求める方法 Previous: 2.1 頂点の座標を計算で求める方法
桂田 祐史
2012-05-30