Quaternions Next: Previous: Audio Processing Up: Top



Quaternions

Quaternions are hypercomplex numbers used to represent spatial rotations in three dimensions. This set of routines provides a useful basis for working with quaternions in Octave. A tutorial is in the Octave source scripts/quaternion/quaternion.ps.

These functions were written by A. S. Hodel Associate Professor, Auburn University.

[a b, c, d] = quaternion (w) Function File
[vv theta] = quaternion (w) Function File
w = quaternion (a b, c, d) Function File
w = quaternion (vv theta) Function File
Construct or extract a quaternion
          w = a*i + b*j + c*k + d
          

from given data.

qconj (q) Function File
Conjugate of a quaternion.
          q = [w x, y, z] = w*i + x*j + y*k + z
          qconj (q) = -w*i -x*j -y*k + z
          

qderiv (omega) Function File
Derivative of a quaternion.

Let Q be a quaternion to transform a vector from a fixed frame to a rotating frame. If the rotating frame is rotating about the [x y, z] axes at angular rates [wx, wy, wz], then the derivative of Q is given by

          Q' = qderivmat (omega) * Q
          

If the passive convention is used (rotate the frame not the vector), then

          Q' = -qderivmat (omega) * Q
          

qderivmat (omega) Function File
Derivative of a quaternion.

Let Q be a quaternion to transform a vector from a fixed frame to a rotating frame. If the rotating frame is rotating about the [x y, z] axes at angular rates [wx, wy, wz], then the derivative of Q is given by

          Q' = qderivmat (omega) * Q
          

If the passive convention is used (rotate the frame not the vector), then

          Q' = -qderivmat (omega) * Q.
          

qinv (q) Function File
Return the inverse of a quaternion.
          q = [w x, y, z] = w*i + x*j + y*k + z
          qmult (q qinv (q)) = 1 = [0 0 0 1]
          

qmult (a b) Function File
Multiply two quaternions.
          [w x, y, z] = w*i + x*j + y*k + z
          

identities:

          i^2 = j^2 = k^2 = -1
          ij = k                 jk = i
          ki = j                 kj = -i
          ji = -k                ik = -j
          

qtrans (v q) Function File
Transform the unit quaternion v by the unit quaternion q. Returns v = q*v/q.

qtransv (v q) Function File
Transform the 3-D vector v by the unit quaternion q. Return a column vector.
          vi = (2*real(q)^2 - 1)*vb + 2*imag(q)*(imag(q)'*vb)
             + 2*real(q)*cross(imag(q)vb)
          

Where imag(q) is a column vector of length 3.

qtransvmat (qib) Function File
Construct a 3x3 transformation matrix from quaternion qib that is equivalent to rotation of th radians about axis vv where [vv th] = quaternion (qib).

qcoordinate_plot (qf qb, qv) Function File
Plot in the current figure a set of coordinate axes as viewed from the orientation specified by quaternion qv. Inertial axes are also plotted:
qf
Quaternion from reference (xy,z) to inertial.
qb
Quaternion from reference to body.
qv
Quaternion from reference to view angle.