最初に言っておきますが、これは非常にばかげた質問に思えるかもしれませんが、SVG はしばしば過小評価される傾向があります (たとえば、Z/ClosePath コマンド @ Mozilla dev サイトの説明を参照し、 SVG Rec. 1.1と比較してください)。
「moveto」コマンド ( Mまたはm ) は、新しい現在のポイントを確立します。その効果は、あたかも「ペン」が持ち上げられて新しい場所に移動したかのようです。
つまり、 「現在のポイント」はM
またはm
です。
ここには次のように書かれています。
"closepath" (Z または z) は、現在のサブパスを終了し、現在のポイントから現在のサブパスの始点まで自動直線を描画します。
では、「初期ポイント」が現在のサブパスが開始されたポイントであると仮定しても、私は正しいでしょうか? ただし、実行中の作業が現在のサブパスで実行され、「現在のポイント」が ==M
またはである場合、「初期ポイント」もまたはm
に等しい必要があります。これはどのように可能であり、私がここに来ていないのですか?M
m
Robert Longson のおかげで、「現在のポイント」と「初期のポイント」とは何かが説明されています。私の論理の誤りは、「The "moveto" コマンド ( Mまたはm )は新しい現在のポイントを確立します。その効果は、まるで "ペン" が持ち上げられて新しい場所に移動したかのようです." つまり、この「変数」は処理の開始時にのみ設定されます。M
m
たとえば、次のようなパス データを想像してください。
m1 c11 c12 c13 z1 m2 c21 c22 c23 z2
その中で、変数m1
をcurrent_point
設定し、 new も設定しinitial_point
ます。その後、次の描画コマンドに処理が移ると、current_point
がそのコマンドの終点になります。例 (V
は現在の処理状態へのポインタです):
V
m1 c11 c12 c13 z1 m2 c21 c22 c23 z2
initial_point = current_point = m1
V
m1 c11 c12 c13 z1 m2 c21 c22 c23 z2
current_point = c11.last_point
V
m1 c11 c12 c13 z1 m2 c21 c22 c23 z2
current_point = c12.last_point
...
V
m1 c11 c12 c13 z1 m2 c21 c22 c23 z2
initial_point = current_point = m2