annotate scripts/quaternion/qderiv.m @ 3224:1e7532b9173b

[project @ 1998-12-04 22:08:23 by jwe]
author jwe
date Fri, 04 Dec 1998 22:08:23 +0000
parents
children a892190f4977
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3224
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
1 function Dmat = qderivmat(Omega)
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
2 # function Dmat = qderivmat(Omega)
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
3 # Derivative of a quaternion.
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
4 # Let Q be a quaternion to transform a vector from a fixed frame to
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
5 # a rotating frame. If the rotating frame is rotating about the
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
6 # [x,y,z] axes at angular rates [wx, wy, wz], then the derivative
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
7 # of Q is given by
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
8 # Q' = qderivmat(Omega)*Q
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
9 #
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
10 # If the passive convention is used (rotate the frame, not the vector),
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
11 # then Q' = -qderivmat(Omega)*Q; see the accompanying document
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
12 # quaternion.ps for details.
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
13
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
14 Omega = vec(Omega);
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
15 if(length(Omega) != 3)
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
16 error("qderivmat: Omega must be a length 3 vector.");
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
17 endif
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
18
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
19 Dmat = 0.5*[ 0.0, Omega(3), -Omega(2), Omega(1); ...
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
20 -Omega(3), 0.0, Omega(1), Omega(2); ...
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
21 Omega(2), -Omega(1), 0.0, Omega(3); ...
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
22 -Omega(1), -Omega(2), -Omega(3), 0.0 ];
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
23 endfunction