情報
概要
ベジェゴン描画:曲線で囲まれた図形を描画する。
曲線描画:曲線を描画する。
解説
引数
座標列:座標(CSV)
返り値
なし
サンプルプログラム
//テスト
線太さは1
塗りスタイルは『べた』
塗り色は$AA9988
『200,200,300,200,300,50,400,50,400,200,500,200,500,250,350,250,200,250』でベジェゴン描画
線色は青色
線太さは3
『120,130,100,150,150,180,180,100,120,50』で曲線描画
//本体
最大区分数とは整数
最大区分数は50
●ベジェゴン描画(座標列で)
点列とは配列
曲線配列とは配列
点位置とは配列
リピート数とは整数
倍率とは整数
点列は座標列を『,』で区切る
もし(点列の配列要素数)<6ならば
戻る
最大区分数はFLOOR(128/(点列の配列要素数))//エラー対策
点列に点列[0]を配列追加
点列に点列[1]を配列追加
点列に点列[2]を配列追加
点列に点列[3]を配列追加
点列に点列[4]を配列追加
点列に点列[5]を配列追加
リピート数はINT(((点列の配列要素数)-6)/2)
リピート数の回
点位置[0]は点列[回数*2]
点位置[1]は点列[回数*2+1]
点位置[6]は点列[回数*2+2]
点位置[7]は点列[回数*2+3]
倍率はSQRT((点位置[6]-点位置[0])^2+(点位置[7]-点位置[1])^2)とSQRT((点列[回数*2-2]-点位置[6])^2+(点列[回数*2-1]-点位置[7])^2)の割り算
点位置[2]は点位置[0]+(点位置[6]-点列[回数*2-2])*倍率*0.4
点位置[3]は点位置[1]+(点位置[7]-点列[回数*2-1])*倍率*0.4
倍率はSQRT((点位置[0]-点位置[6])^2+(点位置[1]-点位置[7])^2)とSQRT((点位置[0]-点列[回数*2+4])^2+(点位置[1]-点列[回数*2+5])^2)の割り算
点位置[4]は点位置[6]+(点位置[0]-点列[回数*2+4])*倍率*0.4
点位置[5]は点位置[7]+(点位置[1]-点列[回数*2+5])*倍率*0.4
曲線配列に(((点位置を『,』で配列結合)のベジェ曲線)の終点カット)を配列追加
曲線配列は曲線配列を『,』で配列結合
最大区分数は50//エラー対策:解除
母艦に曲線配列で多角形
●曲線描画(座標列で)
点列とは配列
曲線配列とは配列
点位置とは配列
リピート数とは整数
倍率とは整数
点列は座標列を『,』で区切る
もし(点列の配列要素数)<6ならば
座標列を連続線描画
戻る
リピート数は((点列の配列要素数)-2)/2
リピート数の回
点位置[0]は点列[(回数-1)*2]
点位置[1]は点列[(回数-1)*2+1]
点位置[6]は点列[(回数-1)*2+2]
点位置[7]は点列[(回数-1)*2+3]
もし回数<=1ならば
倍率はSQRT((点位置[0]-点位置[6])^2+(点位置[1]-点位置[7])^2)とSQRT((点位置[0]-点列[(回数-1)*2+4])^2+(点位置[1]-点列[(回数-1)*2+5])^2)の割り算
点位置[4]は点位置[6]+(点位置[0]-点列[(回数-1)*2+4])*倍率*0.4
点位置[5]は点位置[7]+(点位置[1]-点列[(回数-1)*2+5])*倍率*0.4
点位置[2]は点位置[0]+(点位置[4]-点位置[0])*0.7
点位置[3]は点位置[1]+(点位置[5]-点位置[1])*0.7
違えば
もし回数>=リピート数ならば
倍率はSQRT((点位置[6]-点位置[0])^2+(点位置[7]-点位置[1])^2)とSQRT((点列[(回数-1)*2-2]-点位置[6])^2+(点列[(回数-1)*2-1]-点位置[7])^2)の割り算
点位置[2]は点位置[0]+(点位置[6]-点列[(回数-1)*2-2])*倍率*0.4
点位置[3]は点位置[1]+(点位置[7]-点列[(回数-1)*2-1])*倍率*0.4
点位置[4]は点位置[6]+(点位置[2]-点位置[6])*0.7
点位置[5]は点位置[7]+(点位置[3]-点位置[7])*0.7
違えば
倍率はSQRT((点位置[6]-点位置[0])^2+(点位置[7]-点位置[1])^2)とSQRT((点列[(回数-1)*2-2]-点位置[6])^2+(点列[(回数-1)*2-1]-点位置[7])^2)の割り算
点位置[2]は点位置[0]+(点位置[6]-点列[(回数-1)*2-2])*倍率*0.4
点位置[3]は点位置[1]+(点位置[7]-点列[(回数-1)*2-1])*倍率*0.4
倍率はSQRT((点位置[0]-点位置[6])^2+(点位置[1]-点位置[7])^2)とSQRT((点位置[0]-点列[(回数-1)*2+4])^2+(点位置[1]-点列[(回数-1)*2+5])^2)の割り算
点位置[4]は点位置[6]+(点位置[0]-点列[(回数-1)*2+4])*倍率*0.4
点位置[5]は点位置[7]+(点位置[1]-点列[(回数-1)*2+5])*倍率*0.4
曲線配列は点位置を『,』で配列結合
曲線配列のベジェ曲線を連続線描画
●割り算(左値と右値の)
もし右値が0でなければ
(左値/右値)で戻る
0で戻る
●連続線描画(座標列を)
点列とは配列
点列は座標列を『,』で区切る
(((点列の配列要素数)-2)/2)の回
母艦の点列[(回数-1)*2],点列[(回数-1)*2+1]から点列[(回数-1)*2+2],点列[(回数-1)*2+3]へ線
●終点カット(座標列の)
点列とは配列
曲線配列とは配列
点列は座標列を『,』で区切る
((点列の配列要素数)-2)の回
曲線配列に点列[回数-1]を配列追加
(曲線配列を『,』で配列結合)で戻る
●ベジェ曲線(座標列の)
点列とは配列
区分数とは整数
曲線配列とは配列
tとは整数
点列は座標列を『,』で区切る
区分数はINT(SQRT((点列[6]-点列[0])^2+(点列[7]-点列[1])^2)/10)
もし区分数<10ならば
区分数は10
もし区分数>最大区分数ならば
区分数は最大区分数
曲線配列に(0,点列[0],点列[2],点列[4],点列[6]から点位置計算)を配列追加
曲線配列に(0,点列[1],点列[3],点列[5],点列[7]から点位置計算)を配列追加
区分数の回
tは回数/区分数
曲線配列に(t,点列[0],点列[2],点列[4],点列[6]から点位置計算)を配列追加
曲線配列に(t,点列[1],点列[3],点列[5],点列[7]から点位置計算)を配列追加
曲線配列を『,』で配列結合で戻る
●点位置計算(t,P1,P2,P3,P4から)
sとは整数
sは1-t
INT((s^3)*P1+3*(s^2)*t*P2+3*s*(t^2)*P3+(t^3)*P4)で戻る
/*曲線&ベジェゴン*ここまで*/
最終更新:2008年09月14日 22:53