CrossFramework Library
|
00001 00006 #if defined(XBASE_INCLUDED_VECTOR3I_HPP) 00007 #else 00008 #define XBASE_INCLUDED_VECTOR3I_HPP 00009 00010 //------------------------------------------------------------ 00011 #include <XBase/BuiltInTypes.hpp> 00012 #include <XBase/ShortString.hpp> 00013 00014 //------------------------------------------------------------ 00015 namespace XBase { 00016 struct Vector2iPOD; 00017 struct Vector3POD; 00018 struct Vector4iPOD; 00019 } 00020 00021 //------------------------------------------------------------ 00022 namespace XBase { 00024 00025 00031 struct Vector3iPOD 00032 { 00033 //============================================================ 00035 00036 static const Vector3iPOD Zero(); 00037 static const Vector3iPOD One(); 00038 static const Vector3iPOD Min(); 00039 static const Vector3iPOD Max(); 00040 static const Vector3iPOD UnitX(); 00041 static const Vector3iPOD UnitY(); 00042 static const Vector3iPOD UnitZ(); 00043 static const Vector3iPOD NegUnitX(); 00044 static const Vector3iPOD NegUnitY(); 00045 static const Vector3iPOD NegUnitZ(); 00046 00047 00048 //============================================================ 00050 00051 s32 x; 00052 s32 y; 00053 s32 z; 00054 00055 00056 //============================================================ 00058 00059 const Vector2iPOD toXY()const; 00060 const Vector2iPOD toXX()const; 00061 const Vector2iPOD toYY()const; 00062 const Vector2iPOD toZZ()const; 00063 const Vector3iPOD toX00()const; 00064 const Vector3iPOD toXY0()const; 00065 const Vector3iPOD to0Y0()const; 00066 const Vector3iPOD to0YZ()const; 00067 const Vector3iPOD to00Z()const; 00068 const Vector3iPOD toXXX()const; 00069 const Vector3iPOD toYYY()const; 00070 const Vector3iPOD toZZZ()const; 00071 const Vector4iPOD toXYZ0()const; 00072 const Vector4iPOD toXXXX()const; 00073 const Vector4iPOD toYYYY()const; 00074 const Vector4iPOD toZZZZ()const; 00075 const Vector3POD toXYZf()const; 00077 00078 //============================================================ 00080 00081 bool equals( const Vector3iPOD& )const; 00082 00083 00084 //============================================================ 00086 00087 const Vector3iPOD add( s32 )const; 00088 const Vector3iPOD sub( s32 )const; 00089 const Vector3iPOD mul( s32 )const; 00090 const Vector3iPOD div( s32 )const; 00091 const Vector3iPOD add( const Vector3iPOD& )const; 00092 const Vector3iPOD sub( const Vector3iPOD& )const; 00093 const Vector3iPOD mul( const Vector3iPOD& )const; 00094 const Vector3iPOD div( const Vector3iPOD& )const; 00095 void addAssign( s32 ); 00096 void subAssign( s32 ); 00097 void mulAssign( s32 ); 00098 void divAssign( s32 ); 00099 void addAssign( const Vector3iPOD& ); 00100 void subAssign( const Vector3iPOD& ); 00101 void mulAssign( const Vector3iPOD& ); 00102 void divAssign( const Vector3iPOD& ); 00103 00104 00105 //============================================================ 00107 00108 const Vector3iPOD operator+( s32 )const; 00109 const Vector3iPOD operator-( s32 )const; 00110 const Vector3iPOD operator*( s32 )const; 00111 const Vector3iPOD operator/( s32 )const; 00112 const Vector3iPOD operator+( const Vector3iPOD& )const; 00113 const Vector3iPOD operator-( const Vector3iPOD& )const; 00114 const Vector3iPOD operator*( const Vector3iPOD& )const; 00115 const Vector3iPOD operator/( const Vector3iPOD& )const; 00116 const Vector3iPOD operator-()const; 00117 Vector3iPOD& operator+=( s32 ); 00118 Vector3iPOD& operator-=( s32 ); 00119 Vector3iPOD& operator*=( s32 ); 00120 Vector3iPOD& operator/=( s32 ); 00121 Vector3iPOD& operator+=( const Vector3iPOD& ); 00122 Vector3iPOD& operator-=( const Vector3iPOD& ); 00123 Vector3iPOD& operator*=( const Vector3iPOD& ); 00124 Vector3iPOD& operator/=( const Vector3iPOD& ); 00125 00126 00127 //============================================================ 00129 00130 const Vector3iPOD min( const Vector3iPOD& )const; 00131 const Vector3iPOD max( const Vector3iPOD& )const; 00132 00133 00134 //============================================================ 00136 00137 const Vector3iPOD clamp( const Vector3iPOD& aMin , const Vector3iPOD& aMax )const; 00138 const Vector3iPOD clampPositive()const; 00139 const Vector3iPOD clampNegative()const; 00140 00141 00142 //============================================================ 00144 00145 const Vector3iPOD abs()const; 00146 const Vector3iPOD neg()const; 00147 bool isPositive()const; 00148 00149 00150 //============================================================ 00152 00153 bool isZero()const; 00154 00155 00156 //============================================================ 00158 00159 00160 const ShortString toShortString()const; 00162 }; 00163 00165 class Vector3i : public Vector3iPOD 00166 { 00167 public: 00168 //============================================================ 00170 00171 Vector3i(); 00172 Vector3i( const Vector3iPOD& aXYZ ); 00173 Vector3i( s32 aV ); 00174 Vector3i( const Vector2iPOD& aXY , s32 aZ ); 00175 Vector3i( s32 aX , s32 aY , s32 aZ ); 00176 00177 }; 00178 00180 typedef Vector3iPOD Vec3i; 00182 } 00183 //------------------------------------------------------------ 00184 #endif 00185 // EOF