
Zitat von
Defiant
Ich kann leider in deinem Quellcode (Welche Sprache ist das eigentlich?)...
Also die Sprache ist vb.Net, ist dir vielleicht durch Visual Studio bekannt.
Ich habe den Code ein wenig angepasst und näher an das Original aus dem Wikipedia-Artikel gebracht
Code:
'Formel zur Umwandlung quatertionen zu Euler-Winkel nach wikipedia
' https://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles
'****************************
Dim ysqr = daten_winkel.y * daten_winkel.y
' roll (x-axis rotation)
Dim t0 = +2.0 * (daten_winkel.w * daten_winkel.x + daten_winkel.y * daten_winkel.z)
Dim t1 = +1.0 - 2.0 * (daten_winkel.x * daten_winkel.x + ysqr)
Dim rollen = Atan2(t0, t1)
' pitch (y-axis rotation)
Dim t2 = +2.0 * (daten_winkel.w * daten_winkel.y - daten_winkel.z * daten_winkel.x)
t2 = If(t2 > 1.0, 1.0, t2)
t2 = If(t2 < -1.0, -1.0, t2)
Dim nicken = Asin(t2) 'pitch
' yaw (z-axis rotation)
Dim t3 = +2.0 * (daten_winkel.w * daten_winkel.z + daten_winkel.x * daten_winkel.y)
Dim t4 = +1.0 - 2.0 * (ysqr + daten_winkel.z * daten_winkel.z)
Dim gieren = Atan2(t3, t4)
Ich habe heraus gefunden, dass auch die Orientierung eine sehr wichtige Rolle spielt, also um welche Achsen gedreht wird.
So gibt es XYZ aber auch XYX und so weiter. Dazu finde ich diese Seite ganz gut http://bediyap.com/programming/conve...ler-rotations/
Außerdem gibt es da für fast jede denkbare Orientierung schon Quellcode in C++.
@shedepe Vielen Dank für den Hinweis! Das werde ich gleich umsetzen.
Lesezeichen