まず、正五角形を描くことを考えましょう。 与えられた自然数 に対して、 円周を 等分する点の座標を表す式は、 あちこちで習っていますね。 一周 を 等分した角は ですから、
として、
とおくと、 ( ) は、 原点を中心とする半径 の円周の 等分点を与えます。
簡単のため として、 また角度が分かりやすいように (?) 単位を度で表すことにして、 点の番号を 0 からでなく から振ることにして、 また頂点をずらす角度 を導入して (真上に頂点が来ると星がきれい)
次のプログラムで正五角形の輪郭が描けます。
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 |