diff --git a/include/math/Vector3.h b/include/math/Vector3.h index 28a69c2..126b580 100644 --- a/include/math/Vector3.h +++ b/include/math/Vector3.h @@ -18,16 +18,12 @@ { public: - BaseType X, Y, Z; + BaseType x, y, z; - TVector3( void ); - TVector3( const TVector3& ); TVector3( BaseType x, BaseType y, BaseType z ); virtual ~TVector3( void ) { } - TVector3& operator=( const TVector3& ); - // TODO: Implement and use epsilon comparison bool operator==( const TVector3& ) const; bool operator!=( const TVector3& ) const; @@ -49,149 +45,121 @@ // TODO: Add other helper functions bool IsZero( void ) const; + + + static TVector3 Zero( void ); }; typedef TVector3< Scalar > Vec3f; - - template< typename BaseType > - inline TVector3< BaseType >::TVector3( void ) - { - } - - template< typename BaseType > - inline TVector3< BaseType >::TVector3( const TVector3& vect ) - : X( vect.X ) - , Y( vect.Y ) - , Z( vect.Z ) - { - } - template< typename BaseType > inline TVector3< BaseType >::TVector3( BaseType x, BaseType y, BaseType z ) - : X( x ) - , Y( y ) - , Z( z ) + : this->x( x ) + , this->y( y ) + , this->z( z ) { } - template< typename BaseType > - inline TVector3< BaseType >& TVector3< BaseType >::operator=( const TVector3& vect ) - { -#ifdef _DEBUG - if ( this == &vect ) - { - return *this; - } -#endif - - X = vect.X; - Y = vect.Y; - Z = vect.Z; - - return *this; - } - template< typename BaseType > inline bool TVector3< BaseType >::operator==( const TVector3& vect ) const { - return X == vect.X && Y == vect.Y && Z == vect.Z; + return x == vect.x && y == vect.y && z == vect.z; } template< typename BaseType > inline bool TVector3< BaseType >::operator!=( const TVector3& vect ) const { - return X != vect.X || Y != vect.Y || Z != vect.Z; + return x != vect.x || y != vect.y || z != vect.z; } template< typename BaseType > inline TVector3< BaseType > TVector3< BaseType >::operator*( BaseType val ) const { - return TVector3< BaseType >( X * val, Y * val, Z * val ); + return TVector3< BaseType >( x * val, y * val, z * val ); } template< typename BaseType > inline TVector3< BaseType > TVector3< BaseType >::operator/( BaseType val ) const { - return TVector3< BaseType >( X / val, Y / val, Z / val ); + return TVector3< BaseType >( x / val, y / val, z / val ); } template< typename BaseType > inline TVector3< BaseType > TVector3< BaseType >::operator*( const TVector3& vect ) const { - return TVector3< BaseType >( X * vect.X, Y * vect.Y, Z * vect.Z ); + return TVector3< BaseType >( x * vect.x, y * vect.y, z * vect.z ); } template< typename BaseType > inline TVector3< BaseType > TVector3< BaseType >::operator/( const TVector3& vect ) const { - return TVector3< BaseType >( X / vect.X, Y / vect.Y, Z / vect.Z ); + return TVector3< BaseType >( x / vect.x, y / vect.y, z / vect.z ); } template< typename BaseType > inline TVector3< BaseType > TVector3< BaseType >::operator+( const TVector3& vect ) const { - return TVector3< BaseType >( X + vect.X, Y + vect.Y, Z + vect.Z ); + return TVector3< BaseType >( x + vect.x, y + vect.y, z + vect.z ); } template< typename BaseType > inline TVector3< BaseType > TVector3< BaseType >::operator-( const TVector3& vect ) const { - return TVector3< BaseType >( X - vect.X, Y - vect.Y, Z - vect.Z ); + return TVector3< BaseType >( x - vect.x, y - vect.y, z - vect.z ); } template< typename BaseType > inline TVector3< BaseType >& TVector3< BaseType >::operator*=( BaseType val ) { - X *= val; - Y *= val; - Z *= val; + x *= val; + y *= val; + z *= val; return *this; } template< typename BaseType > inline TVector3< BaseType >& TVector3< BaseType >::operator/=( BaseType val ) { - X /= val; - Y /= val; - Z /= val; + x /= val; + y /= val; + z /= val; return *this; } template< typename BaseType > inline TVector3< BaseType >& TVector3< BaseType >::operator*=( const TVector3& vect ) { - X *= vect.X; - Y *= vect.Y; - Z *= vect.Z; + x *= vect.x; + y *= vect.y; + z *= vect.z; return *this; } template< typename BaseType > inline TVector3< BaseType >& TVector3< BaseType >::operator/=( const TVector3& vect ) { - X /= vect.X; - Y /= vect.Y; - Z /= vect.Z; + x /= vect.x; + y /= vect.y; + z /= vect.z; return *this; } template< typename BaseType > inline TVector3< BaseType >& TVector3< BaseType >::operator+=( const TVector3& vect ) { - X += vect.X; - Y += vect.Y; - Z += vect.Z; + x += vect.x; + y += vect.y; + z += vect.z; return *this; } template< typename BaseType > inline TVector3< BaseType >& TVector3< BaseType >::operator-=( const TVector3& vect ) { - X -= vect.X; - Y -= vect.Y; - Z -= vect.Z; + x -= vect.x; + y -= vect.y; + z -= vect.z; return *this; } @@ -199,7 +167,7 @@ inline bool TVector3< BaseType >::IsZero( void ) const { // TODO: Use epsilon - return X == 0 && Y == 0 && Z == 0; + return x == 0 && y == 0 && z == 0; } #endif