我使用的路径没有曲线;只是一系列连接点。获得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