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 Vector2POD; 00017 struct Vector3POD; 00018 struct Vector4POD; 00019 } 00020 00021 //------------------------------------------------------------ 00022 namespace XBase { 00024 00025 00026 typedef Vector2POD Vec2; 00027 00034 struct Vector2POD 00035 { 00036 //============================================================ 00038 00039 static const Vector2POD Zero(); 00040 static const Vector2POD One(); 00041 static const Vector2POD Min(); 00042 static const Vector2POD Max(); 00043 static const Vector2POD UnitX(); 00044 static const Vector2POD UnitY(); 00045 static const Vector2POD NegUnitX(); 00046 static const Vector2POD NegUnitY(); 00047 00048 00049 //============================================================ 00051 00052 f32 x; 00053 f32 y; 00054 00055 00056 //============================================================ 00058 00059 const Vector2POD toX0()const; 00060 const Vector2POD to0Y()const; 00061 const Vector2POD toXX()const; 00062 const Vector2POD toYX()const; 00063 const Vector2POD toYY()const; 00064 const Vector3POD toXY0()const; 00065 const Vector3POD toXXX()const; 00066 const Vector3POD toYYY()const; 00067 const Vector4POD toXY00()const; 00068 const Vector4POD toXXXX()const; 00069 const Vector4POD toYYYY()const; 00071 00072 //============================================================ 00074 00075 bool equals( const Vector2POD& )const; 00076 bool equalsStrict( const Vector2POD& )const; 00077 00078 00079 //============================================================ 00081 00082 const Vector2POD add( f32 )const; 00083 const Vector2POD sub( f32 )const; 00084 const Vector2POD mul( f32 )const; 00085 const Vector2POD div( f32 )const; 00086 const Vector2POD add( const Vector2POD& )const; 00087 const Vector2POD sub( const Vector2POD& )const; 00088 const Vector2POD mul( const Vector2POD& )const; 00089 const Vector2POD div( const Vector2POD& )const; 00090 void addAssign( f32 ); 00091 void subAssign( f32 ); 00092 void mulAssign( f32 ); 00093 void divAssign( f32 ); 00094 void addAssign( const Vector2POD& ); 00095 void subAssign( const Vector2POD& ); 00096 void mulAssign( const Vector2POD& ); 00097 void divAssign( const Vector2POD& ); 00098 00099 00100 //============================================================ 00102 00103 const Vector2POD operator+( f32 )const; 00104 const Vector2POD operator-( f32 )const; 00105 const Vector2POD operator*( f32 )const; 00106 const Vector2POD operator/( f32 )const; 00107 const Vector2POD operator+( const Vector2POD& )const; 00108 const Vector2POD operator-( const Vector2POD& )const; 00109 const Vector2POD operator*( const Vector2POD& )const; 00110 const Vector2POD operator/( const Vector2POD& )const; 00111 const Vector2POD operator-()const; 00112 Vector2POD& operator+=( f32 ); 00113 Vector2POD& operator-=( f32 ); 00114 Vector2POD& operator*=( f32 ); 00115 Vector2POD& operator/=( f32 ); 00116 Vector2POD& operator+=( const Vector2POD& ); 00117 Vector2POD& operator-=( const Vector2POD& ); 00118 Vector2POD& operator*=( const Vector2POD& ); 00119 Vector2POD& operator/=( const Vector2POD& ); 00120 00121 00122 //============================================================ 00124 00125 const Vector2POD min( const Vector2POD& )const; 00126 const Vector2POD max( const Vector2POD& )const; 00127 00128 00129 //============================================================ 00131 00132 const Vector2POD clamp( const Vector2POD& aMin , const Vector2POD& aMax )const; 00133 const Vector2POD clampPositive()const; 00134 const Vector2POD clampNegative()const; 00135 00136 00137 //============================================================ 00139 00140 const Vector2POD abs()const; 00141 const Vector2POD neg()const; 00142 00143 00144 //============================================================ 00146 00147 f32 squareLength()const; 00148 f32 length()const; 00149 f32 distance( const Vector2POD& )const; 00150 bool isZero()const; 00151 bool isZeroStrict()const; 00152 bool isUnit()const; 00153 const Vector2POD unit()const; 00154 void unitAssign(); 00155 00156 00157 //============================================================ 00159 00160 f32 dot( const Vector2POD& )const; 00161 f32 cross( const Vector2POD& )const; 00162 00163 00164 //============================================================ 00166 00167 00168 const ShortString toShortString()const; 00170 }; 00171 00173 class Vector2 : public Vector2POD 00174 { 00175 public: 00176 //============================================================ 00178 00179 Vector2(); 00180 Vector2( const Vector2POD& aXY ); 00181 Vector2( f32 aV ); 00182 Vector2( f32 aX , f32 aY ); 00183 00184 }; 00185 00187 typedef Vector2POD Vec2; 00188 00190 typedef Vector2POD Vector2fPOD; 00191 00193 typedef Vec2 Vec2f; 00194 00196 typedef Vector2 Vector2f; 00198 } 00199 //------------------------------------------------------------ 00200 #endif 00201 // EOF