CrossFramework Library

XBase/Vector4i.hpp

説明を見る。
00001 
00006 #if defined(XBASE_INCLUDED_VECTOR4I_HPP)
00007 #else
00008 #define XBASE_INCLUDED_VECTOR4I_HPP
00009 
00010 //------------------------------------------------------------
00011 #include <XBase/BuiltInTypes.hpp>
00012 #include <XBase/ShortString.hpp>
00013 
00014 //------------------------------------------------------------
00015 namespace XBase {
00016     struct Vector2iPOD;
00017     struct Vector3iPOD;
00018     struct Vector4POD;
00019 }
00020 
00021 //------------------------------------------------------------
00022 namespace XBase {
00024 
00025 
00031     struct Vector4iPOD
00032     {
00033         //============================================================
00035 
00036         static const Vector4iPOD Zero();     
00037         static const Vector4iPOD One();      
00038         static const Vector4iPOD Min();      
00039         static const Vector4iPOD Max();      
00040         static const Vector4iPOD UnitX();    
00041         static const Vector4iPOD UnitY();    
00042         static const Vector4iPOD UnitZ();    
00043         static const Vector4iPOD UnitW();    
00044         static const Vector4iPOD NegUnitX(); 
00045         static const Vector4iPOD NegUnitY(); 
00046         static const Vector4iPOD NegUnitZ(); 
00047         static const Vector4iPOD NegUnitW(); 
00048 
00049 
00050         //============================================================
00052 
00053         s32 x; 
00054         s32 y; 
00055         s32 z; 
00056         s32 w; 
00057 
00058         
00059         //============================================================
00061 
00062         const Vector2iPOD toXY()const;
00063         const Vector2iPOD toXX()const;
00064         const Vector2iPOD toYY()const;
00065         const Vector2iPOD toZZ()const;
00066         const Vector2iPOD toWW()const;
00067         const Vector3iPOD toXYZ()const;
00068         const Vector3iPOD toXXX()const;
00069         const Vector3iPOD toYYY()const;
00070         const Vector3iPOD toZZZ()const;
00071         const Vector3iPOD toWWW()const;
00072         const Vector4iPOD toXYZ0()const;
00073         const Vector4iPOD toXY0W()const;
00074         const Vector4iPOD toXY00()const;
00075         const Vector4iPOD toX0ZW()const;
00076         const Vector4iPOD toX0Z0()const;
00077         const Vector4iPOD toX00W()const;
00078         const Vector4iPOD toX000()const;
00079         const Vector4iPOD to0YZ0()const;
00080         const Vector4iPOD to0Y0W()const;
00081         const Vector4iPOD to0Y00()const;
00082         const Vector4iPOD to00ZW()const;
00083         const Vector4iPOD to00Z0()const;
00084         const Vector4iPOD to000W()const;
00085         const Vector4iPOD toXXXX()const;
00086         const Vector4iPOD toYYYY()const;
00087         const Vector4iPOD toZZZZ()const;
00088         const Vector4iPOD toWWWW()const;
00089         const Vector4POD  toXYZWf()const;
00091 
00092         //============================================================
00094 
00095         bool equals( const Vector4iPOD& )const;       
00096 
00097 
00098         //============================================================
00100 
00101         const Vector4iPOD add( s32 )const; 
00102         const Vector4iPOD sub( s32 )const; 
00103         const Vector4iPOD mul( s32 )const; 
00104         const Vector4iPOD div( s32 )const; 
00105         const Vector4iPOD add( const Vector4iPOD& )const; 
00106         const Vector4iPOD sub( const Vector4iPOD& )const; 
00107         const Vector4iPOD mul( const Vector4iPOD& )const; 
00108         const Vector4iPOD div( const Vector4iPOD& )const; 
00109         void addAssign( s32 ); 
00110         void subAssign( s32 ); 
00111         void mulAssign( s32 ); 
00112         void divAssign( s32 ); 
00113         void addAssign( const Vector4iPOD& ); 
00114         void subAssign( const Vector4iPOD& ); 
00115         void mulAssign( const Vector4iPOD& ); 
00116         void divAssign( const Vector4iPOD& ); 
00117 
00118         
00119         //============================================================
00121 
00122         const Vector4iPOD operator+( s32 )const; 
00123         const Vector4iPOD operator-( s32 )const; 
00124         const Vector4iPOD operator*( s32 )const; 
00125         const Vector4iPOD operator/( s32 )const; 
00126         const Vector4iPOD operator+( const Vector4iPOD& )const; 
00127         const Vector4iPOD operator-( const Vector4iPOD& )const; 
00128         const Vector4iPOD operator*( const Vector4iPOD& )const; 
00129         const Vector4iPOD operator/( const Vector4iPOD& )const; 
00130         const Vector4iPOD operator-()const; 
00131         Vector4iPOD& operator+=( s32 ); 
00132         Vector4iPOD& operator-=( s32 ); 
00133         Vector4iPOD& operator*=( s32 ); 
00134         Vector4iPOD& operator/=( s32 ); 
00135         Vector4iPOD& operator+=( const Vector4iPOD& ); 
00136         Vector4iPOD& operator-=( const Vector4iPOD& ); 
00137         Vector4iPOD& operator*=( const Vector4iPOD& ); 
00138         Vector4iPOD& operator/=( const Vector4iPOD& ); 
00139 
00140         
00141         //============================================================
00143 
00144         const Vector4iPOD min( const Vector4iPOD& )const; 
00145         const Vector4iPOD max( const Vector4iPOD& )const; 
00146 
00147 
00148         //============================================================
00150 
00151         const Vector4iPOD clamp( const Vector4iPOD& aMin , const Vector4iPOD& aMax )const; 
00152         const Vector4iPOD clampPositive()const; 
00153         const Vector4iPOD clampNegative()const; 
00154 
00155 
00156         //============================================================
00158 
00159         const Vector4iPOD abs()const; 
00160         const Vector4iPOD neg()const; 
00161         bool isPositive()const; 
00162 
00163 
00164         //============================================================
00166 
00167         bool isZero()const;                      
00168 
00169         
00170         //============================================================
00172 
00173 
00174         const ShortString toShortString()const;
00176     };
00177 
00179     class Vector4i : public Vector4iPOD
00180     {
00181     public:
00182         //============================================================
00184 
00185         Vector4i(); 
00186         Vector4i( const Vector4iPOD& aXYZW ); 
00187         Vector4i( s32 aV ); 
00188         Vector4i( const Vector2iPOD& aXY , s32 aZ , s32 aW ); 
00189         Vector4i( const Vector3iPOD& aXYZ , s32 aW ); 
00190         Vector4i( s32 aX , s32 aY , s32 aZ , s32 aW ); 
00191 
00192     };
00193     
00195     typedef Vector4iPOD Vec4i;
00197 }
00198 //------------------------------------------------------------
00199 #endif
00200 // EOF
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 マクロ定義