GLBasic forum

Other languages => GLBasic - de => Topic started by: backslider on 2012-Feb-27

Title: X,Y,Z - Rotation aus 3x3 Matrix errechnen?
Post by: backslider on 2012-Feb-27
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
Title: Re: X,Y,Z - Rotation aus 3x3 Matrix errechnen?
Post by: kanonet on 2012-Feb-27
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):
Code (glbasic) Select
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):
Code (glbasic) Select
yaw = -ASIN(m[2])

Pitch (Z-Rotation):
Code (glbasic) Select
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. ;)
Title: Re: X,Y,Z - Rotation aus 3x3 Matrix errechnen?
Post by: backslider on 2012-Feb-27
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