Motorola DSP96002 User Manual
Page 636
MOTOROLA
DSP96002 USER’S MANUAL
B-117
B.1.48
Vector Cross Product
The cross product of two vectors is always perpendicular to both of the vectors making this vector useful
for 3D graphics, shading, and illumination. The three dimensional cross product a X b where a and b are
{1 x 3} vectors can be written as the determinant:
i j k
ax ay az
bx by bz
where i, j and k are the unit vectors in the x, y and z directions respectively. Expanding this determinant
yields:
cx = ay bz - az by
cy = az bx - ax bz
cz = ax by - ay bx
where vector c is the cross product of a and b.
Memory Map: X Y
r0
→
ax .
m0=2 ay .
(mod 3) az .
. bx
←
r4
. by m0=2
. bz (mod 3)
r1
→
cx .
cy .
cz .
move #aaddr,r0 ; set up pointers
move #2,m0
move #baddr,r4
move #2,m4
move #caddr,r1
Program ICycles
Words
move x:(r0)+,d6.s y:(r4)-,d7.s ;ax bx 1 1
move x:(r0)+,d6.s y:(r4)-,d7.s ;ay bz 1 1
fmpy.s d6,d7,d3 x:(r0)+,d6.s y:(r4)-,d7.s ;az by 1 1
fmpy.s d6,d7,d2 y:(r4)-,d7.s ; bx 1 1
fmpy d6,d7,d1 fsub.s d2,d3 x:(r0)+,d6.s y:(r4)-,d7.s ;ax bz 1 1
fmpy.s d6,d7,d0 d3.s,x:(r1)+ y:(r4)-,d7.s ;cx by 1 1
fmpy d6,d7,d3 fsub.s d0,d1 x:(r0)+,d6.s y:(r4)-,d7.s ;ay bx 1 1
fmpy.s d6,d7,d2 d1.s,x:(r1)+ ;cy 1 1