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 
00028     struct Vector4POD
00029     {
00030         //============================================================
00032 
00033         static const Vector4POD Zero();     
00034         static const Vector4POD One();      
00035         static const Vector4POD Min();      
00036         static const Vector4POD Max();      
00037         static const Vector4POD UnitX();    
00038         static const Vector4POD UnitY();    
00039         static const Vector4POD UnitZ();    
00040         static const Vector4POD UnitW();    
00041         static const Vector4POD NegUnitX(); 
00042         static const Vector4POD NegUnitY(); 
00043         static const Vector4POD NegUnitZ(); 
00044         static const Vector4POD NegUnitW(); 
00045 
00046         //============================================================
00048 
00049         f32 x; 
00050         f32 y; 
00051         f32 z; 
00052         f32 w; 
00053 
00054         
00055         //============================================================
00057 
00058         const Vector2POD toXY()const;
00059         const Vector2POD toXX()const;
00060         const Vector2POD toYY()const;
00061         const Vector2POD toZZ()const;
00062         const Vector2POD toWW()const;
00063         const Vector3POD toXYZ()const;
00064         const Vector3POD toXXX()const;
00065         const Vector3POD toYYY()const;
00066         const Vector3POD toZZZ()const;
00067         const Vector3POD toWWW()const;
00068         const Vector4POD toXYZ0()const;
00069         const Vector4POD toXY0W()const;
00070         const Vector4POD toXY00()const;
00071         const Vector4POD toX0ZW()const;
00072         const Vector4POD toX0Z0()const;
00073         const Vector4POD toX00W()const;
00074         const Vector4POD toX000()const;
00075         const Vector4POD to0YZ0()const;
00076         const Vector4POD to0Y0W()const;
00077         const Vector4POD to0Y00()const;
00078         const Vector4POD to00ZW()const;
00079         const Vector4POD to00Z0()const;
00080         const Vector4POD to000W()const;
00081         const Vector4POD toXXXX()const;
00082         const Vector4POD toYYYY()const;
00083         const Vector4POD toZZZZ()const;
00084         const Vector4POD toWWWW()const;
00086 
00087         //============================================================
00089 
00090         bool equals( const Vector4POD& )const;       
00091         bool equalsStrict( const Vector4POD& )const; 
00092 
00093 
00094         //============================================================
00096 
00097         const Vector4POD add( f32 )const; 
00098         const Vector4POD sub( f32 )const; 
00099         const Vector4POD mul( f32 )const; 
00100         const Vector4POD div( f32 )const; 
00101         const Vector4POD add( const Vector4POD& )const; 
00102         const Vector4POD sub( const Vector4POD& )const; 
00103         const Vector4POD mul( const Vector4POD& )const; 
00104         const Vector4POD div( const Vector4POD& )const; 
00105         void addAssign( f32 ); 
00106         void subAssign( f32 ); 
00107         void mulAssign( f32 ); 
00108         void divAssign( f32 ); 
00109         void addAssign( const Vector4POD& ); 
00110         void subAssign( const Vector4POD& ); 
00111         void mulAssign( const Vector4POD& ); 
00112         void divAssign( const Vector4POD& ); 
00113 
00114         
00115         //============================================================
00117 
00118         const Vector4POD operator+( f32 )const; 
00119         const Vector4POD operator-( f32 )const; 
00120         const Vector4POD operator*( f32 )const; 
00121         const Vector4POD operator/( f32 )const; 
00122         const Vector4POD operator+( const Vector4POD& )const; 
00123         const Vector4POD operator-( const Vector4POD& )const; 
00124         const Vector4POD operator*( const Vector4POD& )const; 
00125         const Vector4POD operator/( const Vector4POD& )const; 
00126         const Vector4POD operator-()const; 
00127         Vector4POD& operator+=( f32 ); 
00128         Vector4POD& operator-=( f32 ); 
00129         Vector4POD& operator*=( f32 ); 
00130         Vector4POD& operator/=( f32 ); 
00131         Vector4POD& operator+=( const Vector4POD& ); 
00132         Vector4POD& operator-=( const Vector4POD& ); 
00133         Vector4POD& operator*=( const Vector4POD& ); 
00134         Vector4POD& operator/=( const Vector4POD& ); 
00135 
00136         
00137         //============================================================
00139 
00140         const Vector4POD min( const Vector4POD& )const; 
00141         const Vector4POD max( const Vector4POD& )const; 
00142 
00143         
00144         //============================================================
00146 
00147         const Vector4POD clamp( const Vector4POD& aMin , const Vector4POD& aMax )const; 
00148         const Vector4POD clampPositive()const;  
00149         const Vector4POD clampNegative()const; 
00150 
00151 
00152         //============================================================
00154 
00155         const Vector4POD abs()const; 
00156         const Vector4POD neg()const; 
00157 
00158 
00159         //============================================================
00161 
00162         f32  squareLength()const;                
00163         f32  length()const;                      
00164         f32  distance( const Vector4POD& )const; 
00165         bool isZero()const;                      
00166         bool isZeroStrict()const;                
00167         bool isUnit()const;                      
00168         const Vector4POD unit()const;            
00169         void unitAssign();                       
00170 
00171 
00172         //============================================================
00174 
00175         f32 dot( const Vector4POD& )const;                
00176 
00177 
00178         //============================================================
00180 
00181 
00182         const ShortString toShortString()const;
00184     };
00185 
00187     class Vector4 : public Vector4POD
00188     {
00189     public:
00190         //============================================================
00192 
00193         Vector4(); 
00194         Vector4( const Vector4POD& aXYZW ); 
00195         Vector4( f32 aX , f32 aY , f32 aZ , f32 aW ); 
00196 
00197     };
00198     
00200     typedef Vector4POD Vector4fPOD;
00201     
00203     typedef Vector4 Vector4f;
00205 }
00206 //------------------------------------------------------------
00207 #endif
00208 // EOF
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 マクロ定義