pitch/yaw/roll
Archives Forums/Blitz3D Bug Reports/pitch/yaw/roll
| ||
Finally I was able to isolate my problem. It is this:Graphics3D 800, 600, 0, 2 SetBuffer BackBuffer() pivot = CreatePivot() RotateEntity pivot, 90, 90, 0 Print EntityPitch(pivot) Print EntityYaw(pivot) Print EntityRoll(pivot) The yaw returns zero. So instead of returning 90,90,0 it returns 90,0,0. Is this a bug ? Is there a way around this ? Thanks in advance. |
| ||
I think this is called gimbal lock: http://en.wikipedia.org/wiki/Gimbal_lock It is a known limitation when using Euler angles ie. it's not a bug. It happens when you try complex rotations. The known way around it is using quaterions. I've no idea how you do that though. |
| ||
Definately Gimbal lock ... see this thread for possible solution. http://www.blitzbasic.com/Community/posts.php?topic=31781 |
| ||
Aha, so this is the infamous Gimbal lock. Thanks a lot, I used fredborgs solution and it works now. I also tried getting the pitch/yaw/roll directly from the GetMatElement() matrix, with the help of a routine from leadwerks. For completion, I added both functions: Thanks again, after hunting me all night, I hope this Gimbal demon is exorcised for good now. :) (edit) Because I needed the local angles too, I modified the FredBorg functions. As fas as I can tell they work, but I don't understand exactly how they work I just made them local (to the parent): |