   Quaternion axis question
  I am now learning more about Quaternions and how they work.  I found a great article at http://www.cprogramming.com/tutorial/3d/quaternions.html which is shedding a lot of light on the topic.The question I have is regarding a statement made by the author.  He states "Remember that a quaternion stores an axis and the amount of rotation about the axis.  So, with that, after I give you the matrix for rotations with quaternions, you would be able to rotate an object over some arbitrarily defined axis by some arbitrary amount, without fear of gimbal lock."Traditionally, with euler angles,  if I want to rotate about some arbitrary angle,  I need to translate the object in world space to 0,0,0 then rotate the object and then translate the object back to its original position.With quaternions,  do I still need to do this manually or does the multiplication take care of this for me?If my question doesn't make sense,  please let me know.  Thanks!   
  I would ask do you really need to know how quaternions work or do you just want to use the tool?Quote:Original post by akaitoraTraditionally, with euler angles,  if I want to rotate about some arbitrary angle,  I need to translate the object in world space to 0,0,0 then rotate the object and then translate the object back to its original position.With quaternions,  do I still need to do this manually or does the multiplication take care of this for me?A point p rotated by a quaternion q, where q' is q 's conjugation rotates p to form p1.p1 = qpq'How this works is due to the quaternion being normalised and moves the point into a unit sphere in the 4th dimension. This is why I ask the first question.So in answer to your question, no you do not manually translate or rotate an object to align it with the origin and axis in order to rotate about an arbitrary axis. The object is automatically moved into the 4th D rotated and moved back.   ;Quote:Original post by akaitoraTraditionally, with euler angles, if I want to rotate about some arbitrary angle, I need to translate the object in world space to 0,0,0 then rotate the object and then translate the object back to its original position.With quaternions, do I still need to do this manually or does the multiplication take care of this for me?The library doing the transformation (modifying the modelview matrix) doesn't care about how you store an object's orientation, so doing a rotation about object's center requires the same set of steps as if you were using Euler angles or a rotational matrix.   