2012-10-04 6 views
1

내가 사용하고있는 경로에는 곡선이 없습니다. 일련의 연결된 지점들.NSBezierPath의 길이를 얻는 가장 좋은 방법은 무엇입니까?

현재 사용하고있는 방법은 경로의 NZBezierPathElement 구성 요소를 반복하고 각 점을 가져 오는 과정을 포함하지만이 방법은 서툴 릅니다 - 특히 각 새 거리를 얻기 위해 마지막 점을 저장해야하기 때문에. 당신이 더 나은 방법을 알고 있다면, 그것은 매우 감사 할 것입니다.

+0

특히 곡선을 사용하는 경우 다음 점까지의 거리를 계산하는 것보다 마지막 점을 저장하는 것이 쉽습니다. – Eiko

+0

사실,하지만 커브를 사용하지 않습니다. – chm

답변

1

알고리즘이 정확하게 들리 네요. 경로의 길이는 각 점 쌍 사이의 길이의 합입니다. 그것은 그래서 여기, 당신이 "서투른"생각하는 이유를 하드 그냥 경우 의사 코드의 알고리즘 :

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, 거북이 그래픽 등)의 기본 요소입니다. - 이스케이프 처리가 없습니다!

+0

매우 고맙습니다. 감사합니다! 방금 내가 놓친이 기본 제공 지원이있을 수 있다고 생각했습니다. 귀하의 가상 코드는 제가 지금까지 해왔 던 것입니다. – chm