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