CrossFramework Library
|
00001 00006 #if defined(XBASE_INCLUDED_VECTOR2_HPP) 00007 #else 00008 #define XBASE_INCLUDED_VECTOR2_HPP 00009 00010 //------------------------------------------------------------ 00011 #include <XBase/BuiltInTypes.hpp> 00012 #include <XBase/ShortString.hpp> 00013 00014 //------------------------------------------------------------ 00015 namespace XBase { 00016 struct Vector3POD; 00017 struct Vector4POD; 00018 } 00019 00020 //------------------------------------------------------------ 00021 namespace XBase { 00023 00024 00028 struct Vector2POD 00029 { 00030 //============================================================ 00032 00033 static const Vector2POD Zero(); 00034 static const Vector2POD One(); 00035 static const Vector2POD Min(); 00036 static const Vector2POD Max(); 00037 static const Vector2POD UnitX(); 00038 static const Vector2POD UnitY(); 00039 static const Vector2POD NegUnitX(); 00040 static const Vector2POD NegUnitY(); 00041 00042 00043 //============================================================ 00045 00046 f32 x; 00047 f32 y; 00048 00049 00050 //============================================================ 00052 00053 const Vector2POD toX0()const; 00054 const Vector2POD to0Y()const; 00055 const Vector2POD toXX()const; 00056 const Vector2POD toYX()const; 00057 const Vector2POD toYY()const; 00058 const Vector3POD toXY0()const; 00059 const Vector3POD toXXX()const; 00060 const Vector3POD toYYY()const; 00061 const Vector4POD toXY00()const; 00062 const Vector4POD toXXXX()const; 00063 const Vector4POD toYYYY()const; 00065 00066 //============================================================ 00068 00069 bool equals( const Vector2POD& )const; 00070 bool equalsStrict( const Vector2POD& )const; 00071 00072 00073 //============================================================ 00075 00076 const Vector2POD add( f32 )const; 00077 const Vector2POD sub( f32 )const; 00078 const Vector2POD mul( f32 )const; 00079 const Vector2POD div( f32 )const; 00080 const Vector2POD add( const Vector2POD& )const; 00081 const Vector2POD sub( const Vector2POD& )const; 00082 const Vector2POD mul( const Vector2POD& )const; 00083 const Vector2POD div( const Vector2POD& )const; 00084 void addAssign( f32 ); 00085 void subAssign( f32 ); 00086 void mulAssign( f32 ); 00087 void divAssign( f32 ); 00088 void addAssign( const Vector2POD& ); 00089 void subAssign( const Vector2POD& ); 00090 void mulAssign( const Vector2POD& ); 00091 void divAssign( const Vector2POD& ); 00092 00093 00094 //============================================================ 00096 00097 const Vector2POD operator+( f32 )const; 00098 const Vector2POD operator-( f32 )const; 00099 const Vector2POD operator*( f32 )const; 00100 const Vector2POD operator/( f32 )const; 00101 const Vector2POD operator+( const Vector2POD& )const; 00102 const Vector2POD operator-( const Vector2POD& )const; 00103 const Vector2POD operator*( const Vector2POD& )const; 00104 const Vector2POD operator/( const Vector2POD& )const; 00105 const Vector2POD operator-()const; 00106 Vector2POD& operator+=( f32 ); 00107 Vector2POD& operator-=( f32 ); 00108 Vector2POD& operator*=( f32 ); 00109 Vector2POD& operator/=( f32 ); 00110 Vector2POD& operator+=( const Vector2POD& ); 00111 Vector2POD& operator-=( const Vector2POD& ); 00112 Vector2POD& operator*=( const Vector2POD& ); 00113 Vector2POD& operator/=( const Vector2POD& ); 00114 00115 00116 //============================================================ 00118 00119 const Vector2POD min( const Vector2POD& )const; 00120 const Vector2POD max( const Vector2POD& )const; 00121 00122 00123 //============================================================ 00125 00126 const Vector2POD clamp( const Vector2POD& aMin , const Vector2POD& aMax )const; 00127 const Vector2POD clampPositive()const; 00128 const Vector2POD clampNegative()const; 00129 00130 00131 //============================================================ 00133 00134 const Vector2POD abs()const; 00135 const Vector2POD neg()const; 00136 00137 00138 //============================================================ 00140 00141 f32 squareLength()const; 00142 f32 length()const; 00143 f32 distance( const Vector2POD& )const; 00144 bool isZero()const; 00145 bool isZeroStrict()const; 00146 bool isUnit()const; 00147 const Vector2POD unit()const; 00148 void unitAssign(); 00149 00150 00151 //============================================================ 00153 00154 f32 dot( const Vector2POD& )const; 00155 f32 cross( const Vector2POD& )const; 00156 00157 00158 //============================================================ 00160 00161 00162 const ShortString toShortString()const; 00164 }; 00165 00167 class Vector2 : public Vector2POD 00168 { 00169 public: 00170 //============================================================ 00172 00173 Vector2(); 00174 Vector2( const Vector2POD& aXY ); 00175 Vector2( f32 aX , f32 aY ); 00176 00177 }; 00178 00180 typedef Vector2POD Vector2fPOD; 00181 00183 typedef Vector2 Vector2f; 00185 } 00186 //------------------------------------------------------------ 00187 #endif 00188 // EOF