CrossFramework Library
|
00001 00006 #if defined(XBASE_INCLUDED_AABBOX2_HPP) 00007 #else 00008 #define XBASE_INCLUDED_AABBOX2_HPP 00009 00010 //------------------------------------------------------------ 00011 #include <XBase/Vector2.hpp> 00012 00013 //------------------------------------------------------------ 00014 namespace XBase { 00015 class AABBox2i; 00016 } 00017 00018 //------------------------------------------------------------ 00019 namespace XBase { 00021 00022 00027 class AABBox2 00028 { 00029 public: 00030 //------------------------------------------------------------ 00032 00033 AABBox2(); 00034 AABBox2( const Vector2POD& aPos ); 00035 AABBox2( const Vector2POD& aPos1 , const Vector2POD& aPos2 ); 00036 00037 00038 //------------------------------------------------------------ 00040 00041 const Vector2POD min()const; 00042 const Vector2POD max()const; 00043 const Vector2POD center()const; 00044 const Vector2POD posLB()const; 00045 const Vector2POD posRB()const; 00046 const Vector2POD posLT()const; 00047 const Vector2POD posRT()const; 00048 float left()const; 00049 float right()const; 00050 float bottom()const; 00051 float top()const; 00052 00053 00054 //------------------------------------------------------------ 00056 00057 float width()const; 00058 float height()const; 00059 const Vector2POD size()const; 00060 const Vector2POD halfSize()const; 00061 00062 00063 //------------------------------------------------------------ 00065 00066 const AABBox2 merge( const Vector2POD& aPos )const; 00067 const AABBox2 merge( const AABBox2& aAABB )const; 00068 void mergeAssign( const Vector2POD& aPos ); 00069 void mergeAssign( const AABBox2& aAABB ); 00070 00071 00072 //------------------------------------------------------------ 00074 00075 00080 bool isIntersects( const AABBox2& aAABB )const; 00081 00087 bool isContains( const Vector2POD& aPos )const; 00088 00094 bool isContains( const AABBox2& aAABB )const; 00096 00097 //------------------------------------------------------------ 00099 00100 const AABBox2 add( const Vector2POD& aTrans )const; 00101 const AABBox2 sub( const Vector2POD& aTrans )const; 00102 const AABBox2 add( const AABBox2& aAABB )const; 00103 const AABBox2 sub( const AABBox2& aAABB )const; 00104 const AABBox2 mul( f32 aScale )const; 00105 void addAssign( const Vector2POD& aTrans ); 00106 void subAssign( const Vector2POD& aTrans ); 00107 void addAssign( const AABBox2& aAABB ); 00108 void subAssign( const AABBox2& aAABB ); 00109 void mulAssign( f32 aScale ); 00110 00111 00112 //------------------------------------------------------------ 00114 00115 const AABBox2 operator+( const Vector2POD& )const; 00116 const AABBox2 operator-( const Vector2POD& )const; 00117 const AABBox2 operator+( const AABBox2& )const; 00118 const AABBox2 operator-( const AABBox2& )const; 00119 const AABBox2 operator*( f32 )const; 00120 AABBox2& operator+=( const Vector2POD& ); 00121 AABBox2& operator-=( const Vector2POD& ); 00122 AABBox2& operator+=( const AABBox2& ); 00123 AABBox2& operator-=( const AABBox2& ); 00124 AABBox2& operator*=( f32 ); 00125 00126 00127 //------------------------------------------------------------ 00129 00130 const AABBox2i toAABB2i()const; 00131 00132 private: 00133 Vector2 mMin; 00134 Vector2 mMax; 00135 }; 00137 } 00138 //------------------------------------------------------------ 00139 #endif 00140 // EOF