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