![]() |
GLScene Direction in Angle umrechnen?
Hi
Wie der Titel schon sagt will ich die Direction eines Objektes in Angle umrechnen. Ich such schon die ganze Zeit über Google, aber ich finds net raus. Kann mir jemand helfen. Vielen Dank im voraus |
AW: GLScene Direction in Angle umrechnen?
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);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. |
AW: GLScene Direction in Angle umrechnen?
CreativeMD, was willst du machen?
|
AW: GLScene Direction in Angle umrechnen?
Also ich hab vor kurzem dieses Thema eröffnet:
![]() Aber die Lösung hat viel zu stark geruckelt. Deshalb wollte ich dann doch mal das TGLUserInterface benutzen aber der dreht das Objekt in mit Direction. Aber meine ganze Steuerung funktioniert nur mit den Angles.
Delphi-Quellcode:
actor_turn, actor_pitch : Single
Delphi-Quellcode:
Ich hab das mal so gemacht aber er sagt diesen Fehler:
actor_pitch := ArcTan2(GLDummyCube1.Direction.Y, GLDummyCube1.Direction.X);
actor_pitch := RadToDeg(actor_pitch); [DCC Fehler] Main.pas(451): E2251 Doppeldeutiger überladener Aufruf von 'ArcTan2' VectorGeometry.pas(7838): Verwandte Methode: function ArcTan2(const Single; const Single): Single; System.Math.pas(1747): Verwandte Methode: function ArcTan2(const Single; const Single): Single; [DCC Fehler] Main.pas(452): E2251 Doppeldeutiger überladener Aufruf von 'RadToDeg' VectorGeometry.pas(7549): Verwandte Methode: function RadToDeg(const Extended): Extended; System.Math.pas(1000): Verwandte Methode: function RadToDeg(const Extended): Extended; Wenn ich einen Single machen gibt er mir diesen Fehler und bei Extended ebenfalls. Was mache ich falsch?:?: |
AW: GLScene Direction in Angle umrechnen?
Zitat:
|
AW: GLScene Direction in Angle umrechnen?
Danke
Ok Hat geklappt vielen Dank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz