#include "vector.h" #include void normalize(double *a) { double c; c = 1.0/NORM(a); MUL(a,c); } void rotate(double *dest, double *v, double *n, double phi) { /* Rotate the vector `v` through an angle `phi` about the axis `n`. */ double temp[3], cos_theta; cos_theta = cos(phi); COPY(dest,v); MUL(dest,cos_theta); CROSS(temp,n,v); MUL(temp,sin(phi)); ADD(dest,dest,temp); COPY(temp,n); MUL(temp,DOT(n,v)*(1-cos_theta)); ADD(dest,dest,temp); }