●円弧

情報


概要

円弧を描画します。

解説

引数「補正」は、↓の長さ


引数

OBJ:描画先
A:座標その1。
B:座標その2。
補正:円の膨らみ具合
方向:「上」か「下」か(右だったら上、左だったら下)。

返り値

なし

サンプルプログラム

線太さ=「3」。
「100,200」と「200,100」から「50」の「下」で円弧。

線色=赤色。
「250,250」と「350,350」から「20」の「上」で円弧。

線太さ=「5」。
「400,100」と「400,300」から「5」の「上」で円弧。

//本体

●円弧({グループ=?母艦}OBJのAとBから補正の方向で)
  A=Aを「,」で区切る。
  B=Bを「,」で区切る。
  A[1]=A[1]×(-1)。//逆にしとく
  B[1]=B[1]×(-1)。//逆にしとく
  もし、A[0]=B[0]ならば、B[0]=B[0]+1。//苦肉の策
  もし、A[1]=B[1]ならば、B[1]=B[1]+1。//苦肉の策
  C[0]=A[0]-B[0]。C[1]=A[1]-B[1]。C=C[1]/C[0]。//A~Bの傾き
  D=(A[1]-(A[0]×C))。//A~Bの切片
  E=(-1)/(C)。//A~Bの垂直二等分線の傾き
  F[0]=(A[0]+B[0])/2。//A~Bの二等分点
  F[1]=(A[1]+B[1])/2。//A~Bの二等分点
  G=(F[1]-(F[0]×E))。//A~Bの垂直二等分線の切片
  H=(補正/(平方根(2)))×2。
  もし、E≦0ならば
    H=Hを「1,{Eの絶対値}」で内分。
    H[0]=H[0]×(-1)。
  違えば
    H=Hを「1,{E}」で内分。
  
  方向で条件分岐
    「上」ならば、I[0]=F[0]+H[0]。I[1]=F[1]+H[1]。//補正点C
    「下」ならば、I[0]=F[0]-H[0]。I[1]=F[1]-H[1]。//補正点C
  
  J[0]=(A[0]+I[0])/2。//A~Cの二等分点
  J[1]=(A[1]+I[1])/2。//A~Cの二等分点

  K[0]=A[0]-I[0]。K[1]=A[1]-I[1]。K=K[1]/K[0]。//A~Cの傾き
  
  L=(-1)/(K)。//A~Cの垂直二等分線の傾き
  M=(J[1]-(J[0]×L))。//A~Cの垂直二等分線の切片
  
  N=(M-G)/(E-L)。//A~Bの垂直二等分線、と、A~Cの垂直二等分線、の交点のX座標
  O=(E×N)+G。//↑のY座標
  P[0]=N。//円の中心の座標X
  P[1]=O。//円の中心の座標Y
  

  Q=平方根(((P[0]-A[0])^2)+((P[1]-A[1])^2))。//円の半径
  前座標=空。

  (361*2)回
    R=(回数/2)をラジアン変換。
    S[0]=(P[0])+(Q)×COS(R)。
    S[1]=(P[1])+(Q)×SIN(R)。
    
    もし、前座標=空ならば、前座標=S。続ける。
    
    方向で条件分岐
      「上」ならば
        もし、S[1]≧((C×S[0])+D)ならば
          OBJの(前座標[0]),(-前座標[1])から(S[0]),(-S[1])へ線。
      「下」ならば
        もし、S[1]≦((C×S[0])+D)ならば
          OBJの(前座標[0]),(-前座標[1])から(S[0]),(-S[1])へ線。
        
    前座標=S。

●内分(SをVで)
  V=Vを「,」で区切る。
  A=S/(Vの配列合計)
  Vで反復、B[回数-1]=A*対象。
  Bで戻る。


名前:
コメント:


タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2009年05月31日 17:30
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。
添付ファイル