円弧を描く


 なでしこには、円弧を描く命令が無いらしいです。

 とりあえず、ぱぱっと作ってみたのですが、世の中にはいろいろと方法があるそうで・・・

 私には三角関数を使うのが一番わかりやすいです。他のアルゴリズムとか、速度が速いとかありますが、今のところこれでじゅうぶんです。

// 円弧の描画
母艦について
  W=320。H=240。タイトルは「円弧の描画」

半径線はオン。 # オフにすると円弧のみ
150,100に50で0から90まで赤色の円弧。

●円弧(x,yにrで{=0}d1から{=0}d2までcの)
  // x --- 円の中心x
  // y --- 円の中心y
  // r --- 円の半径r
  // d1--- 描画開始角度(右方向が0゜=360゜)
  // d2--- 描画終了角度
  # 角度チェック
  d1=d1と360の余り。d2=d2と360の余り。
  もしd1<0ならばd1=d1+360
  もしd2<0ならばd2=d2+360
  #描画開始
  線色はc。線太さは1。
  sx,syをd1で座標計算。ex,eyをd2で座標計算。
  もし半径線がオンならば
    x,yからx+sx*r,y+sy*rへ線。x,yからx+ex*r,y+ey*rへ線。
  dn=(d1+1)と360の余り。
  必要の間
    px,pyをdnで座標計算。
    x+sx*r,y+sy*rからx+px*r,y+py*rへ線。sx=px。sy=py。
    dn=(dn+1)と360の余り。もしdn=d2ならば抜ける。
  x+sx*r,y+sy*rからx+ex*r,y+ey*rへ線。
●座標計算({参照渡し}xx,{参照渡し}yyをddで)
  xx=COS(DEG2RAD(dd))。yy=SIN(DEG2RAD(dd))*(-1)
  ddで条件分岐
    0ならば、xx=1。yy=0。
    90ならば、xx=0。yy=-1。
    180ならば、xx=-1。yy=0。
    270ならば、xx=0。yy=1。
最終更新:2009年09月11日 15:22