Je suis en train de porter mon application de dessin/mise en page graphique jruby/java2d sur macruby/cacao. Par conséquent, j'ai besoin d'obtenir le point d'intersection d'un NSBezierPath ouvert avec un NSBezierPath fermé.NSBezierPath/Line Intersection/flatten
En java2d, j'ai utilisé l'astuce suivante. J'ai aplati les deux chemins et j'ai fait un simple test d'intersection de ligne pour chaque segment.
Y a-t-il un moyen simple de convertir un NSBezierPath en un ensemble de lignes droites? Mon algorithme actuel parcourt simplement la ligne (d'une manière de recherche binaire) jusqu'à ce que je trouve un NSPoint pour lequel containsPoint est vrai. Mais cela ne fonctionne que pour les lignes droites. Celui que j'ai implémenté dans java2d a également fonctionné pour les chemins courbes.
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
Merci de ne pas m'avoir donné une RTFM que je méritais bien. – thestoneage