00001 #ifndef __J2K__JVector3D_HPP__ 00002 #define __J2K__JVector3D_HPP__ 00003 00004 #define MATH_PI 3.141592653589793238462643 00005 00006 class JVector3D { 00007 public: 00008 00009 JVector3D(); 00010 JVector3D( const double x, const double y, const double z ); 00011 JVector3D( const JVector3D& v ); 00012 00013 JVector3D& operator=( const JVector3D& v ); 00014 00015 BOOL operator==( const JVector3D& v ) const; 00016 BOOL operator!=( const JVector3D& v ) const; 00017 00018 friend JVector3D operator+( const JVector3D& left, const JVector3D& right ); 00019 friend JVector3D operator+( const JVector3D& left, const double Factor ); 00020 friend JVector3D operator-( const JVector3D& left, const JVector3D& right ); 00021 friend JVector3D operator-( const JVector3D& left, const double Factor ); 00022 friend JVector3D operator*( const JVector3D& left, const JVector3D& right ); 00023 friend JVector3D operator*( const JVector3D& left, const double Factor ); 00024 friend JVector3D operator/( const JVector3D& left, const JVector3D& right ); 00025 friend JVector3D operator/( const JVector3D& left, const double Factor ); 00026 00027 void operator+=( const JVector3D& v ); 00028 void operator+=( const double Factor ); 00029 void operator-=( const JVector3D& v ); 00030 void operator-=( const double Factor ); 00031 void operator*=( const JVector3D& v ); 00032 void operator*=( const double Factor ); 00033 void operator/=( const JVector3D& v ); 00034 void operator/=( const double Factor ); 00035 00036 void Abs(); 00037 00038 void AddScaled( const JVector3D& v, const double& Scale ); 00039 void Adjust( const double X, const double Y, const double Z); 00040 00041 BOOL bAtOrg() const; 00042 BOOL bWithinLimits( const double Limit ) const; 00043 00044 double Dot( const JVector3D& v ) const; 00045 00046 double X() const; 00047 double X( const double x ); 00048 double Y() const; 00049 double Y( const double y ); 00050 double Z() const; 00051 double Z( const double z ); 00052 00053 double Magnitude() const; 00054 double MagSum() const; 00055 void ClipToDegrees(); 00056 void Cross( const JVector3D& v ); 00057 void HalfBetween( const JVector3D& v ); 00058 void Mix( const JVector3D& v ); 00059 void Negate(); 00060 void Normalize(); 00061 void Set( const double x, const double y, const double z ); 00062 void Square(); 00063 void ToRadians(); 00064 00065 friend JVector3D vecCross( const JVector3D& left, const JVector3D& right ); 00066 friend JVector3D vecMix( const JVector3D& left, const JVector3D& right ); 00067 friend JVector3D vecHalfBetween( const JVector3D& left, 00068 const JVector3D& right ); 00069 00070 protected: 00071 friend class Matrix4by4; 00072 00073 private: 00074 double X; 00075 double Y; 00076 double Z; 00077 }; 00078 00079 #endif