[Face-Wizard] 

 [Inkscape] 
 
 [Potrace] 
 
 [Tablet_Renew] 
 
 [MY_CGs] 
J Inkscapeの図形スナップと変形

■ ストローク幅 > 0 の時の、選択範囲のズレ
ハンドル長が0の、任意の角度のストロークをノードツールで延長するのは簡単(水平・垂直なら[Ctrl]+ドラッグ、それ以外は[Ctrl+Alt]+ドラッグ)ですが、選択ツールを使用して2点間のストロークを延長すると、一旦ストローク幅を0または無しにしてからでないと最低でも始点以外はズレてしまいます(水平・垂直・45°に引いた線を除く)。

なんでそうなるのか実験してみました。
例えば、図のようにCubeの底辺のノードにスナップさせた斜め2点のストロークを延長するとします。
斜めのストロークを選択ツールで延長するには、通常の矩形を拡大する時と同じように、選択範囲の角を延長する方向に[Ctrl]+ドラッグ(対角を固定しつつ縦横比固定)で伸ばせば良いのですが、ストローク幅が0でない時はこんな事になります。
「設定」→「変形」で、拡大/縮小に合わせて線幅も略(デフォルトでon)するとき(コントロールバーのボタンがonになっていても同じです)

ちょっと極端に太くしていますが、「拡大」によってストローク幅が変化すると、中心線=セグメントは元の位置から平行(縦横比固定で拡大したので)にずれていきます。
平行にずれるので当然、スナップしていたはずの始点のノードも移動してしまいます。

変形時に線幅が変化しないとき
ストローク幅がたとえ変化しなくても、元の終点位置を通るはずだったポイントは線を延長するほど離れていきます。
(この場合始点のノードは元の位置のままです)

つまりストローク幅を固定すると、縦横比固定で拡大しても線の角度が変わります(水平・垂直・45°以外の1直線のストロークの場合)


理由はごく単純なことで、ストロークの端部形状は円形以外はセグメントに対して鉛直で、何よりストローク幅が有ればそのぶん選択範囲が広がるからです。
[Ctrl]+ドラッグは、あくまで選択範囲の対角(または対辺の中心)を固定するのであり、選択範囲とはストローク幅も含めたオブジェクトの最大幅x高さ(※注)ですから、ストローク幅が0を超える時はノード(もしくはセグメント)との間に開きが生じます。
(※注: ストロークスタイル→連結リミットの値によって異なる)
ストローク幅を設定している時の選択範囲の角がどこに有るかといえば、実はココにあるわけです
(例によって図は物凄く拡大しています)。

選択範囲の角が固定されている状態で線幅を太くするためには、ノードを選択範囲の角から遠ざけるしかないし、線幅を固定したとしても選択範囲の対角線をどんどん伸ばして行けば、対角線の角度が45°でない限り、ノードの終点が離れるほどずれる事になります。

選択範囲の対角線の角度と斜めストローク(ノード2点間のセグメント)の角度は必ずしも一致しないのです。
ちなみにストローク幅0の線、またはフィルだけのオブジェクトの選択範囲の角は、どれだけ拡大してもきっちりノードと一致します(あたりまえと言えばあたりまえですが)。これなら対角線を伸ばしていってもずれることはありません。たぶん。
以上のことから、斜め線を選択ツールで延長する時には、

 1.Outlineモードにする([Ctrl+Num5])
 2.ストロークを「なし」に
 3.選択ツールで[Ctrl]ドラッグ
 4.ストローク「あり」に戻す

という手順で行わなければなりません(いやだからノードツールを使えば済むんですけど)。


では水平・垂直・45°なストローク(閉じてないパス)の端部は必ず選択範囲に接するのかと言うと、実はそうでもないのです。
矩形で正方形を作って角に始点終点をスナップし、ストロークを45°の角度で引いてあります。
表示中の選択範囲は、矩形のではなくストロークの選択範囲で、以下ノードは全て矩形の角に一致しています。

なぜストロークの端部(の角)が選択範囲に接しないのかと思ったら
こういう事のようです。

つまり選択範囲は、ストロークの端部形状の設定に関わらず、端部を常に「丸」(端部ノードを中心とする円)として範囲を算出しているようです。

ストロークの端部が選択範囲の辺に接するのは、水平・垂直線を除いて端部形状が「丸」のときだけです。
端部ノードを中心とする円 = 1辺の長さが線幅と等しい正方形の内接円なので、端部形状を「四角」にすると、選択範囲よりも角がはみ出します。
もちろんストロークをパスに変換すれば、選択範囲より小さかったりはみ出したりという事は無くなります。

水平・垂直のストロークで選択範囲とストロークの4つ角が一致するのは端部が「四角」のときだけです。

つまり単純な四角を描くだけならストローク幅を目いっぱい太くして2点のノードで描けるのですが、意味無いのでやめましょう(1万ピクセルまで試してみた)。デフォルト設定では次にパスを引く時えらい事になります(笑)。

このほか選択範囲からはみ出る物として、「連結リミット」が有ります。
左図はデフォルトのストローク結合形状「角」で連結リミット=4.00の正3角形です。ストローク幅や2辺の狭角によってはみ出る量が変化しますが、直線同士の交点では4以上にしても変化しないようです。

また連結リミットが有効なのは結合形状が「角」のときだけです。

※端部形状は閉じたパスでは無関係です。
閉じたパスの場合でも、コーナーポイントを挟む2辺が両方とも選択範囲に接しないストローク(の角の外側)が選択範囲に接するのは結合の形状が「丸」のときだけです。

ノードがコーナーポイントなら結合部の内側が丸くなる事はありません。
結合を「斜め」にすると角が完全に平らに潰れます。これも角が選択範囲には接しません。

アイコンのように必ず45°で面取りされるのではなくて、90°以上の鈍角でも3点間が完全に1直線にならない限り角は潰れます。

なお結合形状を「角」で連結リミットを0にすると「斜め」と同じ形になります。
※水平線・垂直線をストロークで引いた時に線幅を0にしてしまうと、選択範囲が存在しないためOutlineモードでも見失ったり本当に消えてしまったりします。

また幅0のストロークは斜めの状態でもマウスドラッグでは選択できません。なので一度見失うと探すのが面倒だったりしますが、逆に見えている物をマウスドラッグで選択して[Shift+1]で選択を反転すれば見つかります。



 MENU△ PAGE TOP▲

Oct 15 2007