Hi Leute,
kann mir jemand sagen, wie ich aus einer OpenGL 3x3 - Matrix (als [16]-Array) die Rotationswerte für X,Y,Z in c++ errechnen kann?
MfG
Nicht in C++ aber in GLBasic, aber vermutlich kannst du das adaptieren:
Wie das geht kannst du einfach im EntitySystem sehen.
Wenn m[] deine matrix ist, dann müsste das folgende funktionieren:
Roll (X-Rotation):
LOCAL c = 1.0 / COS(-ASIN(m[2]))
IF ABS(c) < 10000000
roll = ATAN( m[6]*c , m[10]*c )
ELSE
roll = 0.0
ENDIF
Yaw (Y-Rotation):
yaw = -ASIN(m[2])
Pitch (Z-Rotation):
LOCAL c = 1.0 / COS(-ASIN(m[2]))
IF ABS(c) < 10000000
pitch = ATAN( m[1]*c , m[0]*c )
ELSE
pitch = ATAN( -m[4] , m[5] )
ENDIF
Hoffe ich habe beim zusammenkürzen keinen Fehler gemacht. ;)
Ach wie doof ich bin und nicht einfach im ES gucke...
Aber danke für deine Mühe und ich denke, das kriege ich portiert. :)
MfG