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 UnitX(); 00036 static const Vector2POD UnitY(); 00037 static const Vector2POD NegUnitX(); 00038 static const Vector2POD NegUnitY(); 00039 00040 00041 //============================================================ 00043 00044 f32 x; 00045 f32 y; 00046 00047 00048 //============================================================ 00050 00051 const Vector2POD toX0()const; 00052 const Vector2POD to0Y()const; 00053 const Vector2POD toXX()const; 00054 const Vector2POD toYX()const; 00055 const Vector2POD toYY()const; 00056 const Vector3POD toXYO()const; 00057 const Vector3POD toXXX()const; 00058 const Vector3POD toYYY()const; 00059 const Vector4POD toXYOO()const; 00060 const Vector4POD toXXXX()const; 00061 const Vector4POD toYYYY()const; 00063 00064 //============================================================ 00066 00067 bool equals( const Vector2POD& )const; 00068 bool equalsStrict( const Vector2POD& )const; 00069 00070 00071 //============================================================ 00073 00074 const Vector2POD add( f32 )const; 00075 const Vector2POD sub( f32 )const; 00076 const Vector2POD mul( f32 )const; 00077 const Vector2POD div( f32 )const; 00078 const Vector2POD add( const Vector2POD& )const; 00079 const Vector2POD sub( const Vector2POD& )const; 00080 const Vector2POD mul( const Vector2POD& )const; 00081 const Vector2POD div( const Vector2POD& )const; 00082 const Vector2POD neg()const; 00083 void addAssign( f32 ); 00084 void subAssign( f32 ); 00085 void mulAssign( f32 ); 00086 void divAssign( f32 ); 00087 void addAssign( const Vector2POD& ); 00088 void subAssign( const Vector2POD& ); 00089 void mulAssign( const Vector2POD& ); 00090 void divAssign( const Vector2POD& ); 00091 00092 00093 //============================================================ 00095 00096 const Vector2POD operator+( f32 )const; 00097 const Vector2POD operator-( f32 )const; 00098 const Vector2POD operator*( f32 )const; 00099 const Vector2POD operator/( f32 )const; 00100 const Vector2POD operator+( const Vector2POD& )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; 00105 Vector2POD& operator+=( f32 ); 00106 Vector2POD& operator-=( f32 ); 00107 Vector2POD& operator*=( f32 ); 00108 Vector2POD& operator/=( f32 ); 00109 Vector2POD& operator+=( const Vector2POD& ); 00110 Vector2POD& operator-=( const Vector2POD& ); 00111 Vector2POD& operator*=( const Vector2POD& ); 00112 Vector2POD& operator/=( const Vector2POD& ); 00113 00114 00115 //============================================================ 00117 00118 f32 squareLength()const; 00119 f32 length()const; 00120 f32 distance( const Vector2POD& )const; 00121 bool isZero()const; 00122 bool isZeroStrict()const; 00123 bool isUnit()const; 00124 const Vector2POD unit()const; 00125 void unitAssign(); 00126 00127 00128 //============================================================ 00130 00131 f32 dot( const Vector2POD& )const; 00132 f32 cross( const Vector2POD& )const; 00133 00134 00135 //============================================================ 00137 00138 00139 const ShortString toShortString()const; 00141 }; 00142 00144 class Vector2 : public Vector2POD 00145 { 00146 public: 00147 //============================================================ 00149 00150 Vector2(); 00151 Vector2( const Vector2POD& aXY ); 00152 Vector2( f32 aX , f32 aY ); 00153 00154 }; 00156 } 00157 //------------------------------------------------------------ 00158 #endif 00159 // EOF