next up previous
Next: A..1.1.3 頑張って星形の 個の頂点を計算する Up: A..1.1 頂点の座標を計算で求める方法 Previous: A..1.1.1 まずは正五角形から

A..1.1.2 素朴に星形

正五角形の頂点を一つおきにたどると星になります。 素朴にやると
  PLOT LINES : x(1),y(1);x(3),y(3),x(5),y(5);x(2),y(2);x(4),y(4);x(1),y(1)
となるでしょうか (これを FOR NEXT を使って書くことも出来ますが、 自主的な課題としましょう)。

kadai6b0.BAS

REM kadai6b0.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
PLOT LINES : x(1),y(1);x(3),y(3);x(5),y(5);x(2),y(2);x(4),y(4);x(1),y(1)
END

図 3: 線画で星
\includegraphics[width=10cm]{kadai6b/kadai6b0.eps}

次のプログラムは、 なるべく避けようと言った PAINT を使って正五角形を描くプログラムです。
kadai6b1.BAS

REM kadai6b1.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
SET WINDOW -1,1,-1,1
DRAW grid
SET AREA COLOR "red"
PLOT LINES : x(1),y(1);x(3),y(3);x(5),y(5);x(2),y(2);x(4),y(4);x(1),y(1)

REM 以下どろくさく塗る(PAINT6連発)
PAINT 0,0
FOR t=1 TO 5
   paint 0.9*x(t),0.9*y(t)
NEXT t
END

図 4: PAINT 六連発で描きました。
\includegraphics[width=10cm]{kadai6b/kadai6b1.eps}

なお、PLOT LINES を強引に PLOT AREA に置き換えると、 図6 のように真ん中が白く抜けた失敗図が出来ます。

図 5: PLOT AREA: x(1),y(1);x(3),y(3);... とすると
\includegraphics[width=10cm]{kadai6b/kadai6b2.eps}

なお、PLOT LINES の前に SET LINE COLOR "red" とすると、 星形の中がきれいに塗れます (輪郭線は消えますが)。


next up previous
Next: A..1.1.3 頑張って星形の 個の頂点を計算する Up: A..1.1 頂点の座標を計算で求める方法 Previous: A..1.1.1 まずは正五角形から
桂田 祐史
2013-07-10