「●円弧」の編集履歴(バックアップ)一覧はこちら
●円弧 - (2008/09/24 (水) 19:33:23) の最新版との変更点
追加された行は緑色になります。
削除された行は赤色になります。
*情報
作者名:五十六
引用元:[[なでしこプログラム掲示板「関数「円弧」」>http://www.himanavi.net/cgi/nade-bbs/cbbs.cgi?mode=al2&namber=919&rev=&no=0]]
*概要
円弧を描画します。
*解説
引数「補正」は、↓の長さ
#image(mudai3.PNG)
***引数
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で戻る。
----
#comment()
----
*情報
作者名:五十六
引用元:[[なでしこプログラム掲示板「関数「円弧」」>http://www.himanavi.net/cgi/nade-bbs/cbbs.cgi?mode=al2&namber=919&rev=&no=0]]
*概要
円弧を描画します。
*解説
引数「補正」は、↓の長さ
#image(mudai3.PNG)
***引数
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で戻る。
----
#comment()
----