quatrotate

Rotate vector by quaternion

Syntax

n = quatrotate(q,r)

Description

n = quatrotate(q,r) calculates the rotated vector, n, for a quaternion, q, and a vector, r. q is either an m-by-4 matrix containing m quaternions, or a single 1-by-4 quaternion. r is either an m-by-3 matrix, or a single 1-by-3 vector. n returns an m-by-3 matrix of rotated vectors. Each element of q and r must be a real number. Additionally, q has its scalar number as the first column.

The quaternion has the form of

q=q0+iq1+jq2+kq3

The vector has the form of

v=iv1+jv2+kv3

The rotated vector has the form of

v=[v1v2v3]=[(12q222q32)2(q1q2+q0q3)2(q1q3q0q2)2(q1q2q0q3)(12q122q32)2(q2q3+q0q1)2(q1q3+q0q2)2(q2q3q0q1)(12q122q22)][v1v2v3]

Examples

Rotate a 1-by-3 vector by a 1-by-4 quaternion:

q = [1 0 1 0];
r = [1 1 1];
n = quatrotate(q, r)


n =

   -1.0000    1.0000    1.0000

Rotate a 1-by-3 vector by a 2-by-4 quaternion:

q = [1 0 1 0; 1 0.5 0.3 0.1];
r = [1 1 1];
n = quatrotate(q, r)


n =

   -1.0000    1.0000    1.0000
    0.8519    1.4741    0.3185

Rotate a 2-by-3 vector by a 1-by-4 quaternion:

q = [1 0 1 0];
r = [1 1 1; 2 3 4];
n = quatrotate(q, r)


n =

   -1.0000    1.0000    1.0000
   -4.0000    3.0000    2.0000

Rotate a 2-by-3 vector by a 2-by-4 quaternion:

q = [1 0 1 0; 1 0.5 0.3 0.1];
r = [1 1 1; 2 3 4];
n = quatrotate(q, r)


n =

   -1.0000    1.0000    1.0000
    1.3333    5.1333    0.9333

References

[1] Stevens, Brian L., Frank L. Lewis, Aircraft Control and Simulation, Wiley–Interscience, 2nd Edition.

Was this topic helpful?