hilfe bei Triangulierung eines Polygons
hilfe bei Triangulierung eines Polygons
Wie die Überschrift ja schon sagt komme ich mit der Triangulierung eines Polygons nich wirklich zurecht.
Wer könnte mir da helfen?
Wer könnte mir da helfen?
Vieleicht recht es ja auch, mal wieder den Monitor zu putzen?bobobo hat geschrieben:Das Bild verdeutlicht nur dass ich ne Brille brauch.
Also bei mir hat es zumindest geholfen. (Man muss es mir langweilig sein)
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
Ok extra für dich ne genauere erklärung
Also auf dem bild siehst du wie ich anhand von einigen x- und y-koordinaten ein polygon zeichne (mit OpenGL) und dieses transparent setze.
So da ja bei einem polygon immer vom ersten punkt zum nächsten zu zeichnenden punkt gezeichnet wird entsteht obiges problem sobald du nach einem vertex was einen großeren y und kleineren x wert hat als das darauffolgende vertex was z.b. einen kleineren y aber einen größeren x wert hat.
Um das besser zu verstehen hier mal eine zeichnung der grüne bereich wird halt jetzt gefüllt doch soll das ja nich sein deswegen Triangulieren des Polygons

Also auf dem bild siehst du wie ich anhand von einigen x- und y-koordinaten ein polygon zeichne (mit OpenGL) und dieses transparent setze.
So da ja bei einem polygon immer vom ersten punkt zum nächsten zu zeichnenden punkt gezeichnet wird entsteht obiges problem sobald du nach einem vertex was einen großeren y und kleineren x wert hat als das darauffolgende vertex was z.b. einen kleineren y aber einen größeren x wert hat.
Um das besser zu verstehen hier mal eine zeichnung der grüne bereich wird halt jetzt gefüllt doch soll das ja nich sein deswegen Triangulieren des Polygons

hier mal noch ne kleine erklärung was die triangulierung macht.
Nachfolgend ein bild anhand desen ich das mal versuche zu beschreiben.
Also als wird das Polygon anhand der eckpunkte in Trapeze zerlegt (die grünen striche immer paralel zur x-axe).
So nun werden von dem eckpunkt der trapezlinien diagonale zu der nächst folgenden trapezlinie mit eckpunkt gemacht wobei der eckpunkt immer gegenüber dem anderen liegen muß (die roten linien). Sowas nennt man dann aufteilen eines Polygon in y-monotone Polygone.
Die jetzt durch die Diagonalen entstandenen Dreiecke können mit einem Greedy-Algorithmus in linearer Zeit in Dreiecke aufgeteilt werden (gelbe linie).
So wenn das dann alles fertig ist kann es nich mehr passieren das wie in meinem ersten screenshot ganz oben das Polygon mit helleren Farben überlagert ist.
Die durch die Diagonalen und den Greedy-Algorithmus entstandenen Dreiecke werden ja dann einzeln gezeichnet und damit gibts die überlagerung nich mehr.

Nachfolgend ein bild anhand desen ich das mal versuche zu beschreiben.
Also als wird das Polygon anhand der eckpunkte in Trapeze zerlegt (die grünen striche immer paralel zur x-axe).
So nun werden von dem eckpunkt der trapezlinien diagonale zu der nächst folgenden trapezlinie mit eckpunkt gemacht wobei der eckpunkt immer gegenüber dem anderen liegen muß (die roten linien). Sowas nennt man dann aufteilen eines Polygon in y-monotone Polygone.
Die jetzt durch die Diagonalen entstandenen Dreiecke können mit einem Greedy-Algorithmus in linearer Zeit in Dreiecke aufgeteilt werden (gelbe linie).
So wenn das dann alles fertig ist kann es nich mehr passieren das wie in meinem ersten screenshot ganz oben das Polygon mit helleren Farben überlagert ist.
Die durch die Diagonalen und den Greedy-Algorithmus entstandenen Dreiecke werden ja dann einzeln gezeichnet und damit gibts die überlagerung nich mehr.

Ich ahne, was du meinst, nicolaus.
Du gibst eine Reihe von Punkten (Vertics) vor, die du OpenGL übergibts. OpenGL zeichnet daraufhin die entsprechenden Polygone.
Allerdings willst du Polygone mit n Vertics zeichen (n є Ν; ≥ 1) statt wie bisher mit nur 3 Vertics.
So richtig? Schreibt man Vertics oder Vertices?
Du gibst eine Reihe von Punkten (Vertics) vor, die du OpenGL übergibts. OpenGL zeichnet daraufhin die entsprechenden Polygone.
Allerdings willst du Polygone mit n Vertics zeichen (n є Ν; ≥ 1) statt wie bisher mit nur 3 Vertics.
So richtig? Schreibt man Vertics oder Vertices?
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
And we're out of beta. We're releasing on time.
es heißt vertieces
wenn du dir die triangulierung sparen willst, probier doch einfach mal glBegin(GL_POLYGON) statt glBegin(GL_TRIANGLES), dann sollte es nicht nötig sein.
edit: (grr ich will den delete button zurück!) achso, das problem ist wahrscheinlich, dass dein polygon konkav ist. ja, da kommst du nicht ums triangulieren rum, oder du teilst dein polygon in mehrere konvexe polygone auf. zum triangulieren findet sich aber einiges auf google, zb auch das hier: http://www.minet.uni-jena.de/www/fakult ... vag_06.pdf
wenn du dir die triangulierung sparen willst, probier doch einfach mal glBegin(GL_POLYGON) statt glBegin(GL_TRIANGLES), dann sollte es nicht nötig sein.
edit: (grr ich will den delete button zurück!) achso, das problem ist wahrscheinlich, dass dein polygon konkav ist. ja, da kommst du nicht ums triangulieren rum, oder du teilst dein polygon in mehrere konvexe polygone auf. zum triangulieren findet sich aber einiges auf google, zb auch das hier: http://www.minet.uni-jena.de/www/fakult ... vag_06.pdf
