#ifndef VECTOR3_H_INCLUDED #define VECTOR3_H_INCLUDED #include class Vector3 { public: Vector3( double xpos = 0.0, double ypos = 0.0, double zpos = 0.0 ) : x( xpos ), y( ypos ), z( zpos ) {} ~Vector3( void ) {} static Vector3 origin; Vector3 cross( const Vector3 &right ) const { return Vector3( ( y * right.z ) - ( z * right.y ), ( z * right.x ) - ( x * right.z ), ( x * right.y ) - ( y * right.x ) ); } Vector3 subtract( const Vector3 &right ) const { return Vector3( x - right.x, y - right.y, z - right.z ); } Vector3 add( const Vector3 &right ) const { return Vector3( x + right.x, y + right.y, z + right.z ); } Vector3 scalarMult( double s ) const { return Vector3( x * s, y * s, z * s ); } double length( void ) const { return sqrt( ( x * x ) + ( y * y ) + ( z * z ) ); } Vector3 normalize( void ) const { double l = length(); return Vector3( x / l, y / l, z / l ); } double dotProduct( const Vector3 &right ) const { return ( x * right.x ) + ( y * right.y ) + ( z * right.z ); } double x; double y; double z; }; #endif // VECTOR3_H_INCLUDED