/* util.c - Don Yang (uguu.org) 06/07/03 */ /*@ -realcompare @*/ #include"global.h" #include"util.h" /******************************************************************* Cross */ void Cross(double ax, double ay, double az, double bx, double by, double bz, /*@out@*/double *ox, /*@out@*/double *oy, /*@out@*/double *oz) { *ox = ay * bz - by * az; *oy = az * bx - bz * ax; *oz = ax * by - bx * ay; } /* Cross() */ /*************************************************************** Normalize */ void Normalize(double *x, double *y, double *z, double unit) { double r; r = sqrt(*x * *x + *y * *y + *z * *z); assert(r > 0.0); unit /= r; *x *= unit; *y *= unit; *z *= unit; } /* Normalize() */ /************************************************************* RotatePoint */ void RotatePoint(double theta, double phi, double *x, double *y, double *z) { double i, j, k; i = *x; j = *y; k = *z; *x = cos(theta) * i - sin(theta)*sin(phi) * j - sin(theta)*cos(phi) * k; *y = cos(phi) * j - sin(phi) * k; *z = sin(theta) * i + cos(theta)*sin(phi) * j + cos(theta)*cos(phi) * k; } /* RotatePoint() */