00001
00026 #ifndef _Vector3D_
00027 #define _Vector3D_
00028
00029 #include <disableWarnings.h>
00030
00031 namespace sonus
00032 {
00045 class Vector3D
00046 {
00047 public:
00048
00049 double x;
00050 double y;
00051 double z;
00052
00056 Vector3D();
00057
00063 Vector3D( const Vector3D* v );
00064
00072 Vector3D( double x, double y, double z );
00073
00079 Vector3D( double arr[] );
00080
00089 Vector3D* setTo( double x, double y, double z );
00090
00097 Vector3D* setTo( double a[] );
00098
00105 Vector3D* setTo( Vector3D* v );
00106
00113 Vector3D* setTo( Vector3D v );
00114
00121 Vector3D* unify();
00122
00128 double magnitude();
00129
00136 double dot( Vector3D v );
00137
00145 Vector3D cross( Vector3D v );
00146
00154 Vector3D* transform( double transmatrix[ 16 ] );
00155
00161 void toArray( double* arr );
00162
00168 char* toString();
00169
00170 Vector3D& operator=( Vector3D v2 );
00171 Vector3D& operator+=( Vector3D v2 );
00172 Vector3D& operator+=( short s );
00173 Vector3D& operator+=( int i );
00174 Vector3D& operator+=( long l );
00175 Vector3D& operator+=( float f );
00176 Vector3D& operator+=( double d );
00177 Vector3D& operator-=( Vector3D v2 );
00178 Vector3D& operator-=( short s );
00179 Vector3D& operator-=( int i );
00180 Vector3D& operator-=( long l );
00181 Vector3D& operator-=( float f );
00182 Vector3D& operator-=( double d );
00183 Vector3D& operator*=( Vector3D v2 );
00184 Vector3D& operator*=( short s );
00185 Vector3D& operator*=( int i );
00186 Vector3D& operator*=( long l );
00187 Vector3D& operator*=( float f );
00188 Vector3D& operator*=( double d );
00189 Vector3D& operator/=( Vector3D v2 );
00190 Vector3D& operator/=( short s );
00191 Vector3D& operator/=( int i );
00192 Vector3D& operator/=( long l );
00193 Vector3D& operator/=( float f );
00194 Vector3D& operator/=( double d );
00195 Vector3D operator+( Vector3D v2 );
00196 Vector3D operator+( short s );
00197 Vector3D operator+( int i );
00198 Vector3D operator+( long l );
00199 Vector3D operator+( float f );
00200 Vector3D operator+( double d );
00201 Vector3D operator-( Vector3D v2 );
00202 Vector3D operator-( short s );
00203 Vector3D operator-( int i );
00204 Vector3D operator-( long l );
00205 Vector3D operator-( float f );
00206 Vector3D operator-( double d );
00207 Vector3D operator*( Vector3D v2 );
00208 Vector3D operator*( short s );
00209 Vector3D operator*( int i );
00210 Vector3D operator*( long l );
00211 Vector3D operator*( double d );
00212 Vector3D operator*( float f );
00213 Vector3D operator/( Vector3D v2 );
00214 Vector3D operator/( short s );
00215 Vector3D operator/( int i );
00216 Vector3D operator/( long l );
00217 Vector3D operator/( double d );
00218 Vector3D operator/( float f );
00219 friend Vector3D operator+( short s, Vector3D v );
00220 friend Vector3D operator+( int i, Vector3D v );
00221 friend Vector3D operator+( long l, Vector3D v );
00222 friend Vector3D operator+( float f, Vector3D v );
00223 friend Vector3D operator+( double d, Vector3D v );
00224 friend Vector3D operator-( short s, Vector3D v );
00225 friend Vector3D operator-( int i, Vector3D v );
00226 friend Vector3D operator-( long l, Vector3D v );
00227 friend Vector3D operator-( float f, Vector3D v );
00228 friend Vector3D operator-( double d, Vector3D v );
00229 friend Vector3D operator*( short s, Vector3D v );
00230 friend Vector3D operator*( int i, Vector3D v );
00231 friend Vector3D operator*( long l, Vector3D v );
00232 friend Vector3D operator*( float f, Vector3D v );
00233 friend Vector3D operator*( double d, Vector3D v );
00234 friend Vector3D operator/( short s, Vector3D v );
00235 friend Vector3D operator/( int i, Vector3D v );
00236 friend Vector3D operator/( long l, Vector3D v );
00237 friend Vector3D operator/( float f, Vector3D v );
00238 friend Vector3D operator/( double d, Vector3D v );
00239 };
00240 }
00241
00242 #endif