紙の上に星形を (ある程度正確に) 描いて、 頂点の座標を求めましょう。 頂点は「外側の円周上にあるもの」と「内側の円周上にあるもの」の 二種類あり、 それぞれ正五角形の頂点をなすことは容易に分かります。
半径
の円に内接する星形とすると、
外側の円周上にある頂点
(
) は、
上で提示した式で計算出来ることになります。
内側の円周上にある頂点
(
)
は (適当に番号を振ります)、
次の性質を持つことは明らかです。
さえ求まれば、後は正五角形を描くのとほとんど同様の計算です。
とりあえず
はユーザーに入力してもらうことにすると、
次のようなプログラムが書けます。
| 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 のようにきれいな星が描けます。