annotate scripts/quaternion/qmult.m @ 3295:35a6d027772c

[project @ 1999-10-19 10:13:02 by jwe]
author jwe
date Tue, 19 Oct 1999 10:13:06 +0000
parents 1e7532b9173b
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 retval = qmult(a,b)
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
2 # function retval = qmult(a,b)
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
3 # multiply two quaternions
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
4 # [w,x,y,z] = w*i + x*j + y*k + z
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
5 # identities:
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
6 # i^2 = j^2 = k^2 = -1
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
7 # ij = k jk = i
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
8 # ki = j kj = -i
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
9 # ji = -k ik = -j
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
10
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
11 [a1,b1,c1,d1] = quaternion(a);
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
12 [a2,b2,c2,d2] = quaternion(b);
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 ri = b1*c2 - c1*b2 + d1*a2 + a1*d2;
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
15 rj = c1*a2 - a1*c2 + d1*b2 + b1*d2;
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
16 rk = a1*b2 - b1*a2 + d1*c2 + c1*d2;
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
17 rr = -(a1*a2 + b1*b2 + c1*c2) + d1*d2;
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 retval = quaternion(ri,rj,rk,rr);
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
20 endfunction
1e7532b9173b [project @ 1998-12-04 22:08:23 by jwe]
jwe
parents:
diff changeset
21