0
我目前正在將我的jruby/java2d Graph Drawing/Layouting應用程序移植到macruby/cocoa。因此我需要獲得一個打開的NSBezierPath與一個封閉的NSBezierPath的交點。NSBezierPath/Line交叉/壓平
在java2d中我使用了下面的技巧。我展平了兩條路徑,併爲每個分段做了一個簡單的線路交叉測試。
那麼有沒有一種簡單的方法將NSBezierPath轉換爲一束直線?
我目前的算法只是走(在二進制搜索的方式)行,直到我找到一個NSPoint爲containsPoint爲true。但它只適用於直線。我在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 2009-09-02 10:33:50