7
$\begingroup$

Suppose you have an arbitrary quaternion - call it A - how do you rotate it by 180 degrees?

Is there a way to do this without convert to angle-axis representation, i.e., keep it within the quaternion algebra?

1 Answers 1

10

I don't know what you mean with rotate a quaternion (which actually represents a rotation). But I guess you mean concatenate two quternions with one being a 180 degree rotation about some axis. In this case you can just use the quternion multipication for concatenating two rotations (There is rarely a case where you need to convert them to axis-angle representation). The quaternion for a 180 degree rotation about axis (x,y,z) is just (0,x,y,z).

  • 0
    So, an 180 degree rotation about y is just (0,0,1,0) ? So I would just multiply that by my existing rotation?2011-05-16
  • 0
    Yes, that should work. Just remember axis/angle rotation (a,x,y,z) is equal to quaternion (cos(a/2),x*sin(a/2),y*sin(a/2),z*sin(a/2)).2011-05-16
  • 0
    But remember the order of multiplication. The one on the right is applied first when rotating a vector by the new quaternion. So (0,0,1,0) * q should do what you want.2011-05-16
  • 0
    @ina So was it of any help? If yes, up-voting (and maybe accepting) would be appreciated.2011-08-22