Registriert: Do Jun 09, 2005 13:48 Beiträge: 117 Wohnort: Sankt Augustin
Hallo,
ich würde gerne einen Algorithmus entwickeln der zwischen konkaven und konvexen Polygonen unterscheiden kann. Soweit ich weiß, ist ein konvexes Polygon ein Polygon mit Winkeln, die 180° nicht überschreiten (oder wie ich es hier schon gefunen habe: wenn man eine Schnur drum legt, liegt diese überall an).
Nun kann man ja von Vektor zu Vektor des Polygons gehen und nachsehen ob die Richtung immer die gleiche ist (im zweidimensionalen raum). Wenn es immer rechts oder links herum geht, ist das Polygon konvex. Ist zwischendrin eine Richtungsänderung zu erkennen, muss es konkav sein.
Kann mir jemand sagen wie man das im dreidimensionalen Raum überprüfen kann?
Registriert: Mi Jul 17, 2002 12:07 Beiträge: 976 Wohnort: Tübingen
Ich würd rekursiv durch die Eckpunkte gehen, daraus Vektoren machen (also aus Punkt 1 und zwei Vektor 1 und aus Punkt 2 und 3 Vektor 2, usw) und dann per Skalarprodukt den Winkel berechnen. Dann schaust du einfach nach, ob die Summe der Winkel größer als (Summe der Punkte - 2)*180 ist.
_________________ "Du musst ein Schwein sein in dieser Welt, sangen die Prinzen, das ist so 1.0. Du musst auf YouTube zeigen, dass dir dein Schweinsein gefällt, das ist leuchtendes, echtes Web 2.0." - Hal Faber Meine Homepage: http://laboda.delphigl.com
Registriert: So Jun 05, 2005 15:08 Beiträge: 39 Wohnort: Bei Bayreuth
Meinst du mit Polygon im R3 ein FLACHES, konkaves Polygon, oder ein Dreidimensionales, NICHT flaches Polygon?
Wenn das Polygon flach ist, kannst du, wie thordk gesagt hat, einfach die 2d Variante verwenden, ist es jedoch 3d, duerfte das mit der normalen schwierig werden...
Ausserdem: Ist dein Polygon trianguliert, also zeichnest du lauter Dreiecke, oder hast du nur die Eckpunkte?
Die Triangulierte Version hat den Vorteil, das du einfach schaust, in welcher Drehrichtung die einzelnen Dreiecke definiert sind (im oder Gegen Uhrzeigersinn) und wenn eines andersrum ist, ist das Polygon konvex.
MFG gmgler
_________________ Geniale Menschen sind selten ordentlich, ordentliche selten genial (Albert Einstein)
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Soweit ich das gelernt habe im Studium, dürfen Polygone für eine korrekte Darstellung in OpenGL nur konvex und eben sein. Wenn eines von beiden nicht gilt, kann man nicht garantieren, dass die Ausgabe konstant bleibt.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Wenn man statt GL_POLYGON einfach GL_TRIANGLE_FAN nimmt (wobei ich nicht genau weiß, warum es ersteres überhaupt gibt), dann kann man auch bei nicht ebenen, konkaven Polygonen noch vorhersagen, wie es aussieht. Ändert aber nichts daran, dass mans nicht machen sollte...
_________________ [18:30] tomok: so wie ich das sehe : alles. was nich was anderes ist als nen Essay ist nen Essay
hi, i'm a signature viruz, plz set me as your signature and help me spread
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.