converts a quaternion into euler angles * * Converts a quaternion into euler angles (r0, r1, r2), based on YZX rotation order. * To handle gimbal lock (singularity at r1 ~ +/- 90 degrees), the cut off is at r0 = +/- 88.85 degrees, which snaps to +/- 90. * The provided quaternion is expected to be normalized. * The error is guaranteed to be less than +/- 0.02 degrees *
| 2658 | * ``` |
| 2659 | */ |
| 2660 | static int QuatToEuler(lua_State* L) |
| 2661 | { |
| 2662 | Quat* q = CheckQuat(L, 1); |
| 2663 | Vector3 euler = dmVMath::QuatToEuler(q->getX(), q->getY(), q->getZ(), q->getW()); |
| 2664 | lua_pushnumber(L, euler.getX()); |
| 2665 | lua_pushnumber(L, euler.getY()); |
| 2666 | lua_pushnumber(L, euler.getZ()); |
| 2667 | return 3; |
| 2668 | } |
| 2669 | |
| 2670 | /*# converts euler angles into a quaternion |
| 2671 | * |