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 UnitX();    
00036         static const Vector4POD UnitY();    
00037         static const Vector4POD UnitZ();    
00038         static const Vector4POD UnitW();    
00039         static const Vector4POD NegUnitX(); 
00040         static const Vector4POD NegUnitY(); 
00041         static const Vector4POD NegUnitZ(); 
00042         static const Vector4POD NegUnitW(); 
00043 
00044         //============================================================
00046 
00047         f32 x; 
00048         f32 y; 
00049         f32 z; 
00050         f32 w; 
00051 
00052         
00053         //============================================================
00055 
00056         const Vector2POD toXY()const;
00057         const Vector2POD toXX()const;
00058         const Vector2POD toYY()const;
00059         const Vector2POD toZZ()const;
00060         const Vector2POD toWW()const;
00061         const Vector3POD toXYZ()const;
00062         const Vector3POD toXXX()const;
00063         const Vector3POD toYYY()const;
00064         const Vector3POD toZZZ()const;
00065         const Vector3POD toWWW()const;
00066         const Vector4POD toXYZO()const;
00067         const Vector4POD toXYOW()const;
00068         const Vector4POD toXYOO()const;
00069         const Vector4POD toXOZW()const;
00070         const Vector4POD toXOZO()const;
00071         const Vector4POD toXOOW()const;
00072         const Vector4POD toXOOO()const;
00073         const Vector4POD toOYZO()const;
00074         const Vector4POD toOYOW()const;
00075         const Vector4POD toOYOO()const;
00076         const Vector4POD toOOZW()const;
00077         const Vector4POD toOOZO()const;
00078         const Vector4POD toOOOW()const;
00079         const Vector4POD toXXXX()const;
00080         const Vector4POD toYYYY()const;
00081         const Vector4POD toZZZZ()const;
00082         const Vector4POD toWWWW()const;
00084 
00085         //============================================================
00087 
00088         bool equals( const Vector4POD& )const;       
00089         bool equalsStrict( const Vector4POD& )const; 
00090 
00091 
00092         //============================================================
00094 
00095         const Vector4POD add( f32 )const; 
00096         const Vector4POD sub( f32 )const; 
00097         const Vector4POD mul( f32 )const; 
00098         const Vector4POD div( f32 )const; 
00099         const Vector4POD add( const Vector4POD& )const; 
00100         const Vector4POD sub( const Vector4POD& )const; 
00101         const Vector4POD mul( const Vector4POD& )const; 
00102         const Vector4POD div( const Vector4POD& )const; 
00103         const Vector4POD neg()const; 
00104         void addAssign( f32 ); 
00105         void subAssign( f32 ); 
00106         void mulAssign( f32 ); 
00107         void divAssign( f32 ); 
00108         void addAssign( const Vector4POD& ); 
00109         void subAssign( const Vector4POD& ); 
00110         void mulAssign( const Vector4POD& ); 
00111         void divAssign( const Vector4POD& ); 
00112 
00113         
00114         //============================================================
00116 
00117         const Vector4POD operator+( f32 )const; 
00118         const Vector4POD operator-( f32 )const; 
00119         const Vector4POD operator*( f32 )const; 
00120         const Vector4POD operator/( f32 )const; 
00121         const Vector4POD operator+( const Vector4POD& )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; 
00126         Vector4POD& operator+=( f32 ); 
00127         Vector4POD& operator-=( f32 ); 
00128         Vector4POD& operator*=( f32 ); 
00129         Vector4POD& operator/=( f32 ); 
00130         Vector4POD& operator+=( const Vector4POD& ); 
00131         Vector4POD& operator-=( const Vector4POD& ); 
00132         Vector4POD& operator*=( const Vector4POD& ); 
00133         Vector4POD& operator/=( const Vector4POD& ); 
00134 
00135 
00136         //============================================================
00138 
00139         f32  squareLength()const;                
00140         f32  length()const;                      
00141         f32  distance( const Vector4POD& )const; 
00142         bool isZero()const;                      
00143         bool isZeroStrict()const;                
00144         bool isUnit()const;                      
00145         const Vector4POD unit()const;            
00146         void unitAssign();                       
00147 
00148 
00149         //============================================================
00151 
00152         f32 dot( const Vector4POD& )const;                
00153 
00154 
00155         //============================================================
00157 
00158 
00159         const ShortString toShortString()const;
00161     };
00162 
00164     class Vector4 : public Vector4POD
00165     {
00166     public:
00167         //============================================================
00169 
00170         Vector4(); 
00171         Vector4( const Vector4POD& aXYZW ); 
00172         Vector4( f32 aX , f32 aY , f32 aZ , f32 aW ); 
00173 
00174     };
00176 }
00177 //------------------------------------------------------------
00178 #endif
00179 // EOF
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 マクロ定義