Zdravím lidi, našel jsem jednoduchou třídu na quaterniony a dle popisu by měla eliminovat gimbal lock při rotaci. Ovšem nikde sem od rána nenašel návod nebo popis, jak přesně to použít.
Třída je zde: http://glprogramming.com/codedump/godecho/quaternion.html
Zkoušel jsem to takto:
float matice[16];
Quaternion A, B, C;
A.CreateFromAxisAngle(1.0, 0.0, 0.0, f);
B.CreateFromAxisAngle(0.0, 1.0, 0.0, g);
C = A * B;
C.CreateMatrix(matice);
glMultMatrixf(matice);
....
i takto:
float matice[16];
Quaternion A, B, C;
A.CreateFromAxisAngle(1.0, 0.0, 0.0, f);
C = C * A;
C.CreateMatrix(matice);
glMultMatrixf(matice);
A pak jeste různé kombinace. Tak jako tak, objekt se mi točí krásně, ale gimbal lock zůstává (čili se mi prohazujou osy X, Y a Z při vícenásobných rotacích). Mohl by mi někdo poradit co dělám špatně??
Díky