현재 jruby/java2d 그래프 그리기/레이아웃 응용 프로그램을 macruby/cocoa로 이식하고 있습니다. 따라서 열려있는 NSBezierPath와 닫힌 NSBezierPath의 교차점을 가져와야합니다.NSBezierPath/Line 교차/평평한
java2d에서 다음 트릭을 사용했습니다. 나는 두 경로를 평평하게하고 각 세그먼트에 대한 간단한 선 교차 검사를 수행했습니다.
그래서 NSBezierPath를 일련의 직선으로 변환하는 간단한 방법이 있습니까?
내 현재 알고리즘은 containsPoint가 true 인 NSPoint를 찾을 때까지 간단히 이진 검색 방법으로 회선을 걷습니다. 그러나 그것은 직선에 대해서만 작동합니다. java2d에서 구현 한 것은 곡선 경로에서도 작동했습니다.
def getIntersection edge, path
out = edge.source
ins = edge.target
until (out.dist(ins) < 1.0)
mid = out + ((ins - out) * 0.5)
if (path.containsPoint (NSMakePoint(mid.x, mid.y)))
ins = mid
else
out = mid
end
end
return out
end
Graph http://i28.tinypic.com/168zs03.png
내가 분명히 받아 들인 RTFM을 제공하지 않아서 고마워. – thestoneage