home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
015.lha
/
tracer_source
/
support.c
< prev
next >
Wrap
C/C++ Source or Header
|
1986-11-10
|
1KB
|
61 lines
/*
* supportive subroutines...
*/
#include <math.h>
#include <stdio.h>
#include "MyMath.h"
#include "rtd.h"
#include "extern.h"
mt (vec, trans)/* make a transpose matrix according to arcane laws
hidden in a linear algebra book plus a lot of my own
sweat. (if you reaaly wanna know, rotate around y axis,
then z axis.) */
register struct vector *vec;
register struct mat *trans;
{
if ( SPTst(vec -> xzl) == 0 ) {
trans -> x.x = SPFlt(0);
trans -> x.y = SPFlt(1);
trans -> x.z = SPFlt(0);
trans -> y.x = SPFlt(-1);
trans -> y.y = SPFlt(0);
trans -> y.z = SPFlt(0);
trans -> z.x = SPFlt(0);
trans -> z.y = SPFlt(0);
trans -> z.z = SPFlt(1);
} else {
trans -> x.x = SPDiv( (vec -> l), (vec -> x) );
trans -> x.y = SPDiv( (vec -> l), (vec -> y) );
trans -> x.z = SPDiv( (vec -> l), (vec -> z) );
trans -> y.x = SPDiv(
SPMul(
(vec -> l),
(vec -> xzl)
),
SPMul(
SPNeg(vec -> x),
(vec -> y)
)
);
trans -> y.y = SPDiv( (vec -> l), (vec -> xzl) );
trans -> y.z = SPDiv(
SPMul(
(vec -> l),
(vec -> xzl)
),
SPMul(
SPNeg(vec -> z),
(vec -> y)
)
);
trans -> z.x = SPDiv( (vec -> xzl), SPNeg(vec -> z) );
trans -> z.y = SPFlt(0);
trans -> z.z = SPDiv( (vec -> xzl), (vec -> x) );
}
}