私は現在、自分のjruby/java2dグラフ描画/レイアウトアプリケーションをmacruby/cocoaに移植しています。したがって、開いたNSBezierPathと閉じたNSBezierPathの交点を取得する必要があります。NSBezierPath/Line Intersection/flatten
java2dで私は以下のトリックを使用しました。両方のパスを平坦化し、各セグメントの単純な線の交差テストを行いました。
NSBezierPathを一連の直線に変換する簡単な方法はありますか?
私の現在のアルゴリズムは、containsPointが真である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