2013-08-30 25 views
0

我首先要說的是,這可能看起來很愚蠢的問題,但SVG往往被低估(例如參見Z/ClosePath的描述命令@Mozilla dev site並將其與SVG Rec. 1.1進行比較)。什麼意思是SVG中的「初始點」和「當前點」,有什麼區別

根據​​:

的的 「moveTo」 命令(中號)建立一個新的當前點。 的效果就好像「鋼筆」被擡起並移動到新的位置。

I.e. 「當前點」是Mm

Here它被寫入的是:

的「closepath」(Z或Z)結束當前子路徑,並且使自動直線要從當前點繪製到初始點當前子路徑

那麼,我是對的,如果我假設「初始點」是當前子路徑已經開始點?但是,如果正在執行的工作是在當前子路徑上完成的,並且「當前點」== Mm,那麼「初始點」也應該等於Mm。這怎麼可能,我沒有到達這裏?


感謝Robert Longson這裏有一個解釋「當前點」和「初始點」是什麼。在我的邏輯錯誤是由清白單詞「建立」,在語句「的的‘moveTo’命令(中號建立當前點,其效果是因爲如果‘筆’引起被擡起並搬到新的位置。「即Mm僅在處理開始時填充此「變量」。

例如,想象路徑數據是這樣的:

m1 c11 c12 c13 z1 m2 c21 c22 c23 z2 

在這裏面,m1將填充current_point變量,也將樹立新的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 
+0

是的,它的確如此。如果你想關閉一條路徑,你基本上需要'Z'。如果您在最後重複第一點,您可以達到相同的行爲。 – Sirko

+0

如果路徑上沒有標記,則爲true。 –

+0

@「如果你在最後重複第一點,你可以達到同樣的行爲。「好吧,這不完全正確:」當子路徑以「** closepath **」結尾時,它**的行爲與「**手動**」通過「lineto」關閉子路徑時發生的行爲不同**命令中'stroke-linejoin'和'stroke-linecap'的執行情況。「 – 8day

回答

1

是的,這就是這個意思。最初的一點是第一個(強制性)舉措。

+0

謝謝。更詳細地閱讀後,我發現我錯過了」The moveto「命令中的關鍵詞」建立「(M或m)*建立一個新的當前點「。完全忘記」當前點「是前一個子路徑的最後一個點。 – 8day

相關問題