Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.034 Beiträge
 
Delphi 12 Athens
 
#2

AW: GLScene Direction in Angle umrechnen?

  Alt 4. Jan 2012, 19:46
Ein Richtungsvektor (Direction) lässt sich in zwei Winkel umrechnen - welche beiden das sind, hängt vom persönlichen Geschmack und von den Anforderungen ab. Hat man die Bedeutung der Winkel einmal festgelegt, ist die Berechnung nicht so schierig. Meistens gibt es aber bestimmte Directions, die nicht eindeutig einer Winkel-Kombination zugeordnet werden können.

Z.B. kann man als einen Winkel φ die Projektion des Richtungsvektors (x, y, z) auf die XY-Ebene nehmen und dort den Winkel zur X-Achse ermitteln (-π..+π). Als zweiten Wert nimmt man dann z.B. den Winkel ρ zwischen dem Richtungsvektor und der XY-Ebene (-π/2..+π/2).

In der Unit Math gibt es eine Funktion ArcTan2, die aus zwei Koordinaten den entsprecheden Winkel errechnet. Die Formeln lauten:
φ := ArcTan2(y, x);
ρ := ArcTan2(z, Hypot(x, y));
Die Ergebnisse sind in Bogenmass (Radians) und können mit der Funktion RadToDeg in Grad umgerechnet werden.

Schwierig wird es, wenn der Vektor (0, 0, 1) ist. Dann ist der Ebenenwinkel nicht definiert und somit nicht berechenbar. Es kann auch Probleme geben, wenn der Vektor nur fasst parallel zur Z-Achse liegt, da man dann mit Zahlen nahe Null rechnet.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat