Laden...

Drehsinn eines Polygons

Erstellt von baensch vor 13 Jahren Letzter Beitrag vor 13 Jahren 4.151 Views
B
baensch Themenstarter:in
135 Beiträge seit 2010
vor 13 Jahren
Drehsinn eines Polygons

Ich habe beliebige Polygone. Die Eckpunkte der Polygone sind entweder im Uhrzeigersinn oder gegen den Uhrzeigersinn gegeben. Und ich möchte nun die Drehrichtung der Punkte bestimmen.
Meine erste Lösung war einfach drei aufeinanderfolgende Punkte herzunehmen das Kreuzprodukt zu bilden und zu einer gemeinsamen Variable addieren und das mit jedem Punkt. Ist zum schluss die variable negativ habe ich die Punkte im Uhrzeigersinn und umgekehrt.
Mein Problem ist nur bei manchen Polygonen Funktioniert dies nicht. So möchte ich fragen ob jemand eine bessere möglichkeit weiß die Drehrichtung zu bstimmen.


while(!asleep)
{
    sheep++;
}

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

für die Bestimmung des "Drehsinns" muss ein Bezugssystem angegeben werden, denn die Geometrie ist bezüglich Achsenspiegelungen invariant.

Möglichkeiten:*Polarkoordinaten verwenden *Flächenberechnung nach der Gauss'schen Trapezformel -> Vorzeichen ergibt Drehrichtung

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

1.130 Beiträge seit 2007
vor 13 Jahren

einfachstes verfahren: normalen berechnen und abfragen, ob punktprodukt von normale und einem vektor, der in richtung betrachter zeigt (aus bildschirm raus) größer als 0 ist.

Zitat von: DGL-Wiki (Wie berechne ich Normalen?)
Wie berechne ich Normalen?
Normalen sind Flächennormalen. Das heißt, sie stehen senkrecht auf einer Fläche.
Welche Fläche?
Eine beliebige...
Ersteinmal eine kurze Zusammenfassung.
* Flächen bestehen aus Polygonen.
* Polygone bestehen aus n Dreiecken.
* Jedes Dreieck ist definiert durch seine 3 Eckpunkte.
* 3 Punkte liegen immer in einer Ebene

Wenn man nun die Normale eines Dreiecks berechnen will geht man folgenermaßen vor:

  1. Einen Eckpunkt als Bezugspunkt (P0) wählen.
  2. Die beiden Vektoren v1 = P1-P0 und v2 = P2-P0 bestimmen.
  3. Diese beiden Kreuzmultiplizieren v1 X v2. (steht in jedem Tafelwerk unter Kreuzprodukt)
  4. Das Ergebnis hat schonmal die richtige Richtung. (Für OpenGl reicht das.)

Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!

B
baensch Themenstarter:in
135 Beiträge seit 2010
vor 13 Jahren

OK Danke erstmal


while(!asleep)
{
    sheep++;
}