hilfe bei Triangulierung eines Polygons

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
nicolaus
Moderator
Beiträge: 1175
Registriert: 11.09.2004 13:09
Kontaktdaten:

hilfe bei Triangulierung eines Polygons

Beitrag von nicolaus »

Wie die Überschrift ja schon sagt komme ich mit der Triangulierung eines Polygons nich wirklich zurecht.
Wer könnte mir da helfen?
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

Vermesser?
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
nicolaus
Moderator
Beiträge: 1175
Registriert: 11.09.2004 13:09
Kontaktdaten:

Beitrag 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
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

Das Bild verdeutlicht nur dass ich ne Brille brauch.
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
DrShrek
Beiträge: 1970
Registriert: 08.09.2004 00:59

Beitrag 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)
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
Benutzeravatar
nicolaus
Moderator
Beiträge: 1175
Registriert: 11.09.2004 13:09
Kontaktdaten:

Beitrag 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
Benutzeravatar
nicolaus
Moderator
Beiträge: 1175
Registriert: 11.09.2004 13:09
Kontaktdaten:

Beitrag 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
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

nun isses klar .. uich frag mal meine Frau
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag 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?
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag 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
Antworten