紙の上に星形を (ある程度正確に) 描いて、 頂点の座標を求めましょう。 頂点は「外側の円周上にあるもの」と「内側の円周上にあるもの」の 二種類あり、 それぞれ正五角形の頂点をなすことは容易に分かります。
半径 の円に内接する星形とすると、 外側の円周上にある頂点 ( ) は、 上で提示した式で計算出来ることになります。
内側の円周上にある頂点 ( ) は (適当に番号を振ります)、 次の性質を持つことは明らかです。
さえ求まれば、後は正五角形を描くのとほとんど同様の計算です。 とりあえず はユーザーに入力してもらうことにすると、 次のようなプログラムが書けます。
kadai5b4.BAS |
REM kadai5b4.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-1)*DT+90 REM j が奇数か偶数かで場合分け IF MOD(j,2)=1 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 |
( ) の値を色々変えて試してみましょう。 くらいが良さそうです。
正確な星形を与える は、図形の相似比を考えたりして求められます。 詳細は自分で解きたい人のお楽しみで取っておきますが (あしからず)、 結果は
です。
kadai5b4.BAS の
INPUT PROMPT "内側の円の半径 r": r |
LET r=(SQR(5)-1)/(SQR(5)+1) |