/*vector3.h 3D vector algebra. Requires the GL/glut library CS537 George Kamberov */ #include #include class vector3 { public: //faster then ussing access functions double c[3]; //components array /* constructors */ vector3(void); //creates a zero vector vector3(double, double, double); //explicit defn vector3( double* array); //converts an array into a vector /* vector agebra */ friend vector3 operator* (double s, const vector3 vector); //scaling friend vector3 cross_prod(const vector3 u, const vector3 v); //cross product friend double dot_prod(const vector3 u, const vector3 v); //dot product friend double norm(const vector3 u); //returns |u| friend vector3 normalize(const vector3 u); //returns u/|u| friend vector3 operator- (const vector3 u, const vector3 v); //retruns u-v /* comparisons */ friend bool operator== (const vector3 u, const vector3 v); friend bool operator!= (const vector3 u, const vector3 v); friend bool colinear(const vector3 u, const vector3 v); /* Misc */ friend ostream& operator<< (ostream& co, const vector3& v); }; class frame { public: vector3 u; vector3 v; vector3 n; /* constructors */ frame(vector3 n, vector3 up); //builds a camera frame if n x up != 0 exits otherwise. /* tests */ friend double det(frame f); friend void error_message(frame f); friend bool right_oriented(frame f); friend bool onb(frame f); };