午後わてんのブログ

ベランダ菜園とWindows用アプリ作成(WPFとC#)

ベジェ曲線での頂点(アンカーポイント)と制御点(ハンドル)の連動移動できるようにしたPixtack紫陽花2.4.29.112

前回、2015/01/09は1日前

gogowaten.hatenablog.com

 
 
ベジェ曲線上での頂点の追加で追加される制御点の位置を変更した
ベジェ曲線でも塗りつぶしできるようにした
ベジェ曲線の線の開閉での挙動を変更した
閉じる時は始点とその制御点を終点に移動
開く時は始点とその制御点を終点とその制御点の反対側へ移動、このとき移動距離は
終点とその制御点の長さの10分の1
 
連動移動にチェックありでアンカーポイントの移動時に制御点も一緒に動くようにした
ショートカットキー
連動移動にチェックなしでもShiftキーを押しながらアンカーポイントの移動をすると制御点も一緒に動くようにした
頂点移動グリッドにチェックなしでもAltキーを押している時は頂点移動をグリッドに合わせるようにした、これはエクセルと同じ操作
 

アンカーポイントと制御点(ハンドル)が一緒に動くことを連動移動って言ってるけど
もっといい表現がありそう
アンカーポイントと制御点(ハンドル)を結ぶ線は方向線というらしい
もしくはハンドルっていうのが方向線も含んでいるのかも
エクセルでベジェ曲線を編集しているとこの動きになっている
別々に動いたほうがいい時もあると思うのでPixtack紫陽花では何も指定しない限りは別々に動くようにして
連動させたい時はチェックを入れるか、Shiftキーを押しながらで行うようにした
 
マウスドラッグ中にShiftキーが押されているかの判定
グリッドに合わせた移動もチェックを入れていなくてもAltキーを押しながらで
できるようにした、これはエクセルと同じ操作になる
 
 
ベジェ曲線上での頂点(アンカーポイント)の追加時に制御点(ハンドル)も追加する
この時の制御点(ハンドル)の位置は、追加した頂点の前後の頂点の差の10分の1にしてみた

f:id:gogowaten:20191016151901p:plain

頂点追加時の制御点(ハンドル)の追加位置
右クリックした座標は(119,111)これが追加頂点(アンカーポイント)
制御点(ハンドル)の座標はここからどの距離に置くかで前後の頂点の差の10分の1は
前の頂点(アンカーポイント)(0,32)と
後の頂点(アンカーポイント)(0,192)
の横座標はともに0なので0-0=0
0の10分の1は0なので
119-0=119と
119+0=119で
どちらの制御点(ハンドル)も追加頂点(アンカーポイント)と同じ横座標
 
縦座標の差は
前が32、後ろが192なので192-32=160
160の10分の1は160/10=16
これをそれぞれの制御点(ハンドル)の縦座標にプラスとマイナスして
111-16=95と
111+16=127
 
単純な計算だけどそれなりに動いている感じ
 
ベジェ曲線で線を閉じるの挙動
イメージ 2
始点を終点に移動するようにしたけどどうしようか
エクセルでは昨日の状態に近くて
始点と終点の間に直線になるようなベジェ曲線を追加していて
開くと先が増えているのがわかる
開閉を繰り返すとその回数分、線が増えることになるのは
不自然だと思うんだよなあ
今回は不具合修正はしていないので昨日の不具合は今日の不具合
 
ダウンロード先
 
ヤフーボックス
テスト05-2パネル追加_20150110.7z
 
 
次回、2015/01/11は1日後