Ich arbeite an einem kleinen HLSL / C ++ - Projekt, um meine Grafikarbeit durchzugehen, und ich bin mir nicht sicher, wie ich einen gegenüberliegenden Vektor aus einem Scheitelpunktpolygon erhalten soll. Ich kann die Formel nicht finden.
Die Positionen sind P1, P2, P3
Nennen wir sie zum Beispiel Klasse VertexPoint mit P1.x, P1.y, P1.z?
Antworten:
Sie können die Normalen leicht finden, indem Sie zwei Vektoren berechnen, V1 = P2-P1 und V2 = P3-P1, und dann das Kreuzprodukt N = V1 x V2 finden. Dann normalisieren Sie N. Abhängig von der Reihenfolge der Eckpunkte (im oder gegen den Uhrzeigersinn) erhalten Sie eine normale Vorderseite oder Rückseite.
Sie müssen auch sicherstellen, dass drei drei Punkte nicht ausgerichtet sind. Wenn dies der Fall ist, müssen Sie einen anderen Punkt auswählen.
quelle