Java - Schnittpunkt des Polygons und die Linie
Gibt es eine Funktion, die mir geben wird, der Schnittpunkt von einer Polygon
und Line2D
?
Habe ich ein Polygon-und einer line-segment, das weiß ich schneiden möchte ich den tatsächlichen Wert des schnittpunkts nicht eine Boolesche Antwort.
Ich sollte wohl hinzufügen, dass ich weiß, es schneidet in genau 1 Stelle, weil ich weiß, dass ein Punkt ausserhalb und einer innerhalb des Polygons. Aber ich weiß nicht, welches segment des Polygons schneidet
InformationsquelleAutor bryan | 2011-03-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier sind Sie. Die interessanten Methoden sind getIntersections und getIntersection. Der ehemalige analysiert über alle polygon-Segmente und sucht nach Kreuzungen der letzteren führt die eigentliche Berechnung. Bitte beachten Sie, dass die Berechnung kann stark optimiert und führt keine überprüfung auf division durch 0. Das funktioniert auch, nur für Polygone. Es könnten angepasst werden, um die Arbeit mit anderen Formen, wenn Sie führen Berechnungen für kubische und quadratische Kurven. Es wird davon ausgegangen, dass Line2D.Doppel wird anstelle von Line2D.Float. Ein Satz verwendet wird, um zu vermeiden, doppelte Punkte (auftreten, auf polygon-Ecke Kreuzungen).
Verwenden Sie bitte nicht diese, ohne umfangreiche Tests, da habe ich einfach gehackt, es schnell zusammen und bin nicht sicher, es ist völlig Klang.
InformationsquelleAutor G_H
Es ist
java.awt.geom.Area.intersect(Area)
mit dem KonstruktorArea(Shape)
mit Ihr Polygon und Weitergabe IhrerLine2D
als eine Fläche zu schneiden geben Sie die Fläche, die geschnitten wird.InformationsquelleAutor initialZero
Müssen Sie Bedenken, dass es vielleicht schneiden sich an mehreren stellen.
Let ' s call the line segment des Polygons P und die Reale Liniensegment L.
Finden wir die Steigung jeder Linie (Steigung m)
Finden Sie die y-achsabschnitt der jede Zeile
//y = mx+b, wobei b der y-Achsenabschnitt
bl = ly1 - (ml*lx1);
bp = py1 - (pl*px1);
Können Sie lösen für den x-Wert mit:
Stecken Sie dann das X in eine der Gleichungen ein, um die Y -
Hier ist eine implementierte version des Algorithmus
und Ergebnisse:
InformationsquelleAutor corsiKa
Mit großem Erfolg, ich habe diesen Ansatz:
InformationsquelleAutor ArcanisCz
Wenn Sie nicht eingeschränkt sind, verwenden Sie die Polygon und Line2D Objekte, die ich empfehlen würde zu verwenden JTS.
Einfaches code Beispiel:
Ergebnis ist:
InformationsquelleAutor Lars