図形を描く

前節までで、円弧や放物線などの滑らかな「曲線」を、折れ線で近似することで描く方法を扱いました。それでは、2 次元の「図形」を描くにはどうすればよいでしょうか?

単純な「図形」を描くのは簡単で、同じように、その境界(図形の周り)の曲線[*1]を折れ線で近似して作った「多角形」を描けばよいのです。

楕円を描く

それでは、具体的に作ってみましょう。と言っても、やることは簡単です。「折れ線」の代わりに「多角形」を描けばよいのですが、「多角形」を描く命令は既になでしこに用意されているので、今までの知識で簡単に作れます。

「楕円」を描く命令[*2]を考えましょう。楕円の境界の点列は、以前 2(c) 節の「半楕円曲線」命令のときにも作りました。それをほぼそのまま流用できます。

# 「100,200から300,400へ50で楕円」のように使う
●楕円({グループ=?母艦}OBJのX1,Y1からX2,Y2へAで)
 Rとは数値。θとは数値。ΔTとは数値。Tとは数値
 (X2-X1),(Y2-Y1)をR,θへ極座標変換
 ※ここの値が 2 倍に変わった:
 ΔT=2*PI/分割数
 点列とは配列。Xとは数値。Yとは数値
 点列[0][0]=X1。点列[0][1]=Y1
 (分割数)回
  TにΔTを直接足す
  X=R/2*(1-COS(T))
  Y=A*SIN(T)
  X,Yをθだけ回転
  点列[回数][0]=X1+X
  点列[回数][1]=Y1+Y
 OBJに点列で多角形。※ここが「折れ線」から「多角形」に変わった。

曲線のときは、楕円を半周する点列で十分でしたが、今度は楕円を一周させる必要があることにも注意してください。

注釈

*1
2 次元図形の境界部分の曲線のように、ループした曲線のことを「閉曲線」と呼びます。
*2
なでしこに最初からある「円」命令でも、X 軸もしくは Y 軸方向に長い楕円を描くことはできますが、斜めの方向に長い楕円を描くことはできません。楕円周の二点を結ぶもっとも長い線分のことを長軸、もっとも短い線分のことを短軸と呼び、それぞれの長さを長径、短径と呼びます。ここで作った「楕円」命令は、長軸(または短軸)の端点の座標と、短径(または長径)の二分の一を与えることで、一般の楕円を描いている訳です。