Ein Stück von einem Polygon mit einer Geraden abschneiden?
-
Hallo.
Ich versuche in C++Builder ein Polygon zu beschneiden, mit Hilfe einer Geraden.
Ich habe ein beliebiges Polygon (Beispielsweise ein 8-Eck) und habe eine Linie/Gerade durch dieses Polygon gezogen. Es liegen jetzt mehrere Ecken außerhalb meiner Linie/Geraden und viele dieser Strecken haben keinen Schnittpunkt mit der Geraden. Die existierenden Schnittpunkte meiner Geraden mit dem Polygon habe ich.
Wie bekomme ich es jetzt hin, dass ich ein Polygon erhalte wo der obere Teil der Geraden weggeschnitten ist und nur noch den unteren Teil des Polygons habe?
Gibt es da in C++(Builder) eventuell eine Intersection Funktion oder wie könnte man das hier sinnvoll lösen?
Über Hilfe würde ich mich freuen. Danke.
-
Siehe http://en.wikipedia.org/wiki/Sutherland–Hodgman_algorithm
Allerdings brauchst du die äußere schleife nicht, weil du ja nur gegen eine gerade clipst und nicht gegen ein polygon.
-
Vielen Dank, dass hat mir sehr geholfen.
Ich habe diese Version dann für mich umgeschrieben: http://www.longsteve.com/fixmybugs/?page_id=203
Wen so etwas noch interessiert, der kann das hier ja mal testen: http://sourceforge.net/projects/polyclipping/
Gibt es für massenweise von Sprachen und ist Freeware. Ich habe es allerdings nicht ausprobiert. Da ich es jetzt erst gefunden habe.