Seite 1 von 1

hilfe bei Triangulierung eines Polygons

Verfasst: 17.08.2005 12:19
von nicolaus
Wie die Überschrift ja schon sagt komme ich mit der Triangulierung eines Polygons nich wirklich zurecht.
Wer könnte mir da helfen?

Verfasst: 17.08.2005 12:37
von bobobo
Vermesser?

Verfasst: 17.08.2005 12:43
von nicolaus
nee nich ganz :mrgreen:
um zu verdeutlichen wofür ich das brauche hier ein bild. Da sieht man ja das was nich ganz stimmt und genau für solche sachen brauch man dann die Triangulierung.

Bild

Verfasst: 17.08.2005 12:51
von bobobo
Das Bild verdeutlicht nur dass ich ne Brille brauch.

Verfasst: 17.08.2005 12:59
von DrShrek
bobobo hat geschrieben:Das Bild verdeutlicht nur dass ich ne Brille brauch.
Vieleicht recht es ja auch, mal wieder den Monitor zu putzen?
Also bei mir hat es zumindest geholfen. (Man muss es mir langweilig sein)

Verfasst: 17.08.2005 13:14
von nicolaus
Ok extra für dich ne genauere erklärung :mrgreen:
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

Bild

Verfasst: 17.08.2005 13:41
von nicolaus
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.

Bild

Verfasst: 17.08.2005 20:52
von bobobo
nun isses klar .. uich frag mal meine Frau

Verfasst: 17.08.2005 21:31
von Laurin
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?

Verfasst: 17.08.2005 21:43
von Zaphod
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