2017-02-01 11 views
-1

Ich arbeite in GLSL, und müssen den Winkel zwischen zwei 2D-Vektoren schnell und effizient berechnen.Berechnung Winkel zwischen zwei Vektoren in GLSL

Gegeben zwei Vektoren vec2, zum Beispiel (30, 20) und (50, 50), ich muss den Winkel zwischen ihnen berechnen.

verwende ich zur Zeit

acos(dot(vector1, vector2)); 

Obwohl dies mir den Winkel richtig scheint nicht zu geben. Mache ich etwas falsch, oder ist das die richtige Funktion?

Antwort

7

Ein Vektor-Skalarprodukt berechnet den Kosinus des Winkels zwischen zwei Vektoren, scaled by the length of both vectors. Wenn Sie nur den Winkel erhalten möchten, müssen Sie beide Vektoren normalisieren, bevor Sie das Skalarprodukt verwenden.

+0

Wie ich vermutete - ein einfacher Fehler, Prost für die Lösung. – Mapboy

1

Das Skalarprodukt allein gibt Ihnen einige sehr grobe Informationen über den Winkel zwischen zwei Vektoren, auch wenn sie nicht Einheitsvektoren:

  • Wenn das Skalarprodukt 0 ist, sind die Vektoren 90 Grad auseinander (orthogonal oder senkrecht).
  • Wenn das Skalarprodukt kleiner als 0 ist, sind die Vektoren mehr als 90 Grad voneinander entfernt.
  • Wenn das Skalarprodukt größer als 0 ist, sind die Vektoren weniger als 90 Grad voneinander entfernt.
+0

Das ist sehr hilfreich! –

Verwandte Themen