CrossFramework Library

XBase/Vector4.hpp

説明を見る。
00001 
00006 #if defined(XBASE_INCLUDED_VECTOR4_HPP)
00007 #else
00008 #define XBASE_INCLUDED_VECTOR4_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 }
00019 
00020 //------------------------------------------------------------
00021 namespace XBase {
00023 
00024 
00030     struct Vector4POD
00031     {
00032         //============================================================
00034 
00035         static const Vector4POD Zero();     
00036         static const Vector4POD One();      
00037         static const Vector4POD Min();      
00038         static const Vector4POD Max();      
00039         static const Vector4POD UnitX();    
00040         static const Vector4POD UnitY();    
00041         static const Vector4POD UnitZ();    
00042         static const Vector4POD UnitW();    
00043         static const Vector4POD NegUnitX(); 
00044         static const Vector4POD NegUnitY(); 
00045         static const Vector4POD NegUnitZ(); 
00046         static const Vector4POD NegUnitW(); 
00047 
00048         //============================================================
00050 
00051         f32 x; 
00052         f32 y; 
00053         f32 z; 
00054         f32 w; 
00055 
00056         
00057         //============================================================
00059 
00060         const Vector2POD toXY()const;
00061         const Vector2POD toXX()const;
00062         const Vector2POD toYY()const;
00063         const Vector2POD toZZ()const;
00064         const Vector2POD toWW()const;
00065         const Vector3POD toXYZ()const;
00066         const Vector3POD toXXX()const;
00067         const Vector3POD toYYY()const;
00068         const Vector3POD toZZZ()const;
00069         const Vector3POD toWWW()const;
00070         const Vector4POD toXYZ0()const;
00071         const Vector4POD toXY0W()const;
00072         const Vector4POD toXY00()const;
00073         const Vector4POD toX0ZW()const;
00074         const Vector4POD toX0Z0()const;
00075         const Vector4POD toX00W()const;
00076         const Vector4POD toX000()const;
00077         const Vector4POD to0YZ0()const;
00078         const Vector4POD to0Y0W()const;
00079         const Vector4POD to0Y00()const;
00080         const Vector4POD to00ZW()const;
00081         const Vector4POD to00Z0()const;
00082         const Vector4POD to000W()const;
00083         const Vector4POD toXXXX()const;
00084         const Vector4POD toYYYY()const;
00085         const Vector4POD toZZZZ()const;
00086         const Vector4POD toWWWW()const;
00088 
00089         //============================================================
00091 
00092         bool equals( const Vector4POD& )const;       
00093         bool equalsStrict( const Vector4POD& )const; 
00094 
00095 
00096         //============================================================
00098 
00099         const Vector4POD add( f32 )const; 
00100         const Vector4POD sub( f32 )const; 
00101         const Vector4POD mul( f32 )const; 
00102         const Vector4POD div( f32 )const; 
00103         const Vector4POD add( const Vector4POD& )const; 
00104         const Vector4POD sub( const Vector4POD& )const; 
00105         const Vector4POD mul( const Vector4POD& )const; 
00106         const Vector4POD div( const Vector4POD& )const; 
00107         void addAssign( f32 ); 
00108         void subAssign( f32 ); 
00109         void mulAssign( f32 ); 
00110         void divAssign( f32 ); 
00111         void addAssign( const Vector4POD& ); 
00112         void subAssign( const Vector4POD& ); 
00113         void mulAssign( const Vector4POD& ); 
00114         void divAssign( const Vector4POD& ); 
00115 
00116         
00117         //============================================================
00119 
00120         const Vector4POD operator+( f32 )const; 
00121         const Vector4POD operator-( f32 )const; 
00122         const Vector4POD operator*( f32 )const; 
00123         const Vector4POD operator/( f32 )const; 
00124         const Vector4POD operator+( const Vector4POD& )const; 
00125         const Vector4POD operator-( const Vector4POD& )const; 
00126         const Vector4POD operator*( const Vector4POD& )const; 
00127         const Vector4POD operator/( const Vector4POD& )const; 
00128         const Vector4POD operator-()const; 
00129         Vector4POD& operator+=( f32 ); 
00130         Vector4POD& operator-=( f32 ); 
00131         Vector4POD& operator*=( f32 ); 
00132         Vector4POD& operator/=( f32 ); 
00133         Vector4POD& operator+=( const Vector4POD& ); 
00134         Vector4POD& operator-=( const Vector4POD& ); 
00135         Vector4POD& operator*=( const Vector4POD& ); 
00136         Vector4POD& operator/=( const Vector4POD& ); 
00137 
00138         
00139         //============================================================
00141 
00142         const Vector4POD min( const Vector4POD& )const; 
00143         const Vector4POD max( const Vector4POD& )const; 
00144 
00145         
00146         //============================================================
00148 
00149         const Vector4POD clamp( const Vector4POD& aMin , const Vector4POD& aMax )const; 
00150         const Vector4POD clampPositive()const; 
00151         const Vector4POD clampNegative()const; 
00152 
00153 
00154         //============================================================
00156 
00157         const Vector4POD abs()const; 
00158         const Vector4POD neg()const; 
00159 
00160 
00161         //============================================================
00163 
00164         f32  squareLength()const;                
00165         f32  length()const;                      
00166         f32  distance( const Vector4POD& )const; 
00167         bool isZero()const;                      
00168         bool isZeroStrict()const;                
00169         bool isUnit()const;                      
00170         const Vector4POD unit()const;            
00171         void unitAssign();                       
00172 
00173 
00174         //============================================================
00176 
00177         f32 dot( const Vector4POD& )const;                
00178 
00179 
00180         //============================================================
00182 
00183 
00184         const ShortString toShortString()const;
00186     };
00187 
00189     class Vector4 : public Vector4POD
00190     {
00191     public:
00192         //============================================================
00194 
00195         Vector4(); 
00196         Vector4( const Vector4POD& aXYZW ); 
00197         Vector4( f32 aV ); 
00198         Vector4( const Vector2POD& aXY , f32 aZ , f32 aW ); 
00199         Vector4( const Vector3POD& aXYZ , f32 aW ); 
00200         Vector4( f32 aX , f32 aY , f32 aZ , f32 aW ); 
00201 
00202     };
00203     
00205     typedef Vector4POD Vec4;
00206 
00208     typedef Vector4POD Vector4fPOD;
00209     
00211     typedef Vec4 Vec4f;
00212 
00214     typedef Vector4 Vector4f;
00216 }
00217 //------------------------------------------------------------
00218 #endif
00219 // EOF
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 マクロ定義