Game Development Reference

In-Depth Information

Figure 1.7.
Change in basis vectors due to angular velocity.

from that, create a differential rotation matrix. However, there is another way to

do a cross product and that is to use a skew symmetric matrix of the appropriate

form, which is just what [
ω
]
×
is. Multiplying
r
j
by the skew symmetric matrix

[
ω
]
×
will perform the cross product
ω

r
j
, and multiplying
R
by [
ω
]
×
will

perform the cross product on all the basis vectors as a single operation, giving us

our desired result of
d
R
/dt
.

×

1.6.5 Numerical Integration for Orientation Using

Quaternions

Performing the Euler step for quaternions is similar to matrices. Again, we use an

equation that can turn our angular velocity vector into a form suitable for adding

to a quaternion:

q
i
+1
=
q
+
h

2
wq
,

where
w
is a quaternion of the form

w
=(0
,ω
)
.

There are a number of proofs for this, though none are as intuitive as the one

for rotation matrices. The most straightforward is from [Hanson 06]. If we take a

quaternion
q
to the
t
power, we find that

q
t
=exp(
t
log
q
)
.

For a rotation quaternion,

log
q
=
0
,
θ

2
r
,

and hence,

exp(
t
log
q
)=exp
0
,t
θ

2
r

=
cos
tθ

2
r
.

2
,
sin
tθ