我使用的路徑沒有曲線;只是一系列連接點。獲得NSBezierPath長度的最佳方法是什麼?
我目前使用的方法涉及遍歷路徑中的NZBezierPathElement組件並獲取每個點,但這很笨拙 - 尤其是因爲我必須保存最後一個點以獲取每個新距離。如果您有任何人知道更好的方法,那將非常感激。
我使用的路徑沒有曲線;只是一系列連接點。獲得NSBezierPath長度的最佳方法是什麼?
我目前使用的方法涉及遍歷路徑中的NZBezierPathElement組件並獲取每個點,但這很笨拙 - 尤其是因爲我必須保存最後一個點以獲取每個新距離。如果您有任何人知道更好的方法,那將非常感激。
你的算法聽起來是正確的 - 路徑的長度是每對點之間長度的總和。很難明白爲什麼你認爲這是「笨拙」,所以這裏是僞代碼算法,以防萬一:
startPoint <- point[1]
length <- 0
repeat with n <- 2 to number of points
nextPoint <- point[n]
length <- length + distanceBetween(startPoint, nextPoint)
startPoint <- nextPoint // hardly clumsy
end repeat
也許你正在做不同呢?
當前點的概念對於NSBezierPath
(以及SVG,烏龜圖形等)及其相關命令(例如相對移動,線相對)至關重要 - 不會逃避它!
非常讓人放心,謝謝!我只是認爲可能有一些內置的支持,我錯過了。你的僞代碼正是我一直在做的。 – chm
與計算到下一個點的距離相比,保存最後一點很容易 - 尤其是在使用曲線的情況下。 – Eiko
是的,但我沒有使用曲線。 – chm