 
 
 
 
 
   
 個の頂点を計算する
個の頂点を計算する
紙の上に星形を (ある程度正確に) 描いて、 頂点の座標を求めましょう。 頂点は「外側の円周上にあるもの」と「内側の円周上にあるもの」の 二種類あり、 それぞれ正五角形の頂点をなすことは容易に分かります。
半径 の円に内接する星形とすると、
外側の円周上にある頂点
の円に内接する星形とすると、
外側の円周上にある頂点  (
 (
 ) は、
上で提示した式で計算出来ることになります。
) は、
上で提示した式で計算出来ることになります。
内側の円周上にある頂点 
 (
 (
 )
は (適当に番号を振ります)、
次の性質を持つことは明らかです。
)
は (適当に番号を振ります)、
次の性質を持つことは明らかです。
 (
 ( ) を半径とする原点中心の円周上にある。
) を半径とする原点中心の円周上にある。
 の角度は、
 の角度は、
   の角度と
 の角度と 
 の角度のちょうど真ん中
(ただし
 の角度のちょうど真ん中
(ただし 
 とする)。
 とする)。
 さえ求まれば、後は正五角形を描くのとほとんど同様の計算です。
とりあえず
 さえ求まれば、後は正五角形を描くのとほとんど同様の計算です。
とりあえず  はユーザーに入力してもらうことにすると、
次のようなプログラムが書けます。
 はユーザーに入力してもらうことにすると、
次のようなプログラムが書けます。
| kadai6b4.BAS | 
| REM kadai6b4.BAS --- 星を描く(後一歩バージョン)
OPTION ANGLE DEGREES
SET WINDOW -1,1,-1,1
DIM X(10),Y(10)
INPUT PROMPT "内側の円の半径 r": r
LET DT=360/10
FOR j=1 TO 10
   LET T=j*DT+18
   IF MOD(j,2)=0 THEN
      LET x(j)=COS(t)
      LET y(j)=SIN(t)
   ELSE
      LET x(j)=r*COS(t)
      LET y(j)=r*SIN(t)
   END IF
NEXT j
SET AREA COLOR "red"
MAT PLOT AREA : x,y 
END
 | 
 (
 ( ) の値を色々変えて試してみましょう。
) の値を色々変えて試してみましょう。
 くらいが良さそうです。
 くらいが良さそうです。
正確な星形を与える  は、図形の相似比を考えたりして求められます。
詳細は自分で解きたい人のお楽しみで取っておきますが
(あしからず)、
結果は
 は、図形の相似比を考えたりして求められます。
詳細は自分で解きたい人のお楽しみで取っておきますが
(あしからず)、
結果は
 
kadai6b4.BAS の INPUT PROMPT "内側の円の半径 r": r を LET r=(SQR(5)-1)/(SQR(5)+1) に変えると、 図 4 のようにきれいな星が描けます。
 
 
 
 
