CrossFramework Library

XBase/Vector3.hpp

説明を見る。
00001 
00006 #if defined(XBASE_INCLUDED_VECTOR3_HPP)
00007 #else
00008 #define XBASE_INCLUDED_VECTOR3_HPP
00009 
00010 //------------------------------------------------------------
00011 #include <XBase/BuiltInTypes.hpp>
00012 #include <XBase/ShortString.hpp>
00013 
00014 //------------------------------------------------------------
00015 namespace XBase {
00016     struct Vector2POD;
00017     struct Vector4POD;
00018 }
00019 
00020 //------------------------------------------------------------
00021 namespace XBase {
00023 
00024 
00030     struct Vector3POD
00031     {
00032         //============================================================
00034 
00035         static const Vector3POD Zero();     
00036         static const Vector3POD One();      
00037         static const Vector3POD Min();      
00038         static const Vector3POD Max();      
00039         static const Vector3POD UnitX();    
00040         static const Vector3POD UnitY();    
00041         static const Vector3POD UnitZ();    
00042         static const Vector3POD NegUnitX(); 
00043         static const Vector3POD NegUnitY(); 
00044         static const Vector3POD NegUnitZ(); 
00045 
00046 
00047         //============================================================
00049 
00050         f32 x; 
00051         f32 y; 
00052         f32 z; 
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 Vector3POD toX00()const;
00063         const Vector3POD toXY0()const;
00064         const Vector3POD to0Y0()const;
00065         const Vector3POD to0YZ()const;
00066         const Vector3POD to00Z()const;
00067         const Vector3POD toXXX()const;
00068         const Vector3POD toYYY()const;
00069         const Vector3POD toZZZ()const;
00070         const Vector4POD toXYZ0()const;
00071         const Vector4POD toXXXX()const;
00072         const Vector4POD toYYYY()const;
00073         const Vector4POD toZZZZ()const;
00075 
00076         //============================================================
00078 
00079         bool equals( const Vector3POD& )const;       
00080         bool equalsStrict( const Vector3POD& )const; 
00081 
00082 
00083         //============================================================
00085 
00086         const Vector3POD add( f32 )const; 
00087         const Vector3POD sub( f32 )const; 
00088         const Vector3POD mul( f32 )const; 
00089         const Vector3POD div( f32 )const; 
00090         const Vector3POD add( const Vector3POD& )const; 
00091         const Vector3POD sub( const Vector3POD& )const; 
00092         const Vector3POD mul( const Vector3POD& )const; 
00093         const Vector3POD div( const Vector3POD& )const; 
00094         void addAssign( f32 ); 
00095         void subAssign( f32 ); 
00096         void mulAssign( f32 ); 
00097         void divAssign( f32 ); 
00098         void addAssign( const Vector3POD& ); 
00099         void subAssign( const Vector3POD& ); 
00100         void mulAssign( const Vector3POD& ); 
00101         void divAssign( const Vector3POD& ); 
00102 
00103         
00104         //============================================================
00106 
00107         const Vector3POD operator+( f32 )const; 
00108         const Vector3POD operator-( f32 )const; 
00109         const Vector3POD operator*( f32 )const; 
00110         const Vector3POD operator/( f32 )const; 
00111         const Vector3POD operator+( const Vector3POD& )const; 
00112         const Vector3POD operator-( const Vector3POD& )const; 
00113         const Vector3POD operator*( const Vector3POD& )const; 
00114         const Vector3POD operator/( const Vector3POD& )const; 
00115         const Vector3POD operator-()const; 
00116         Vector3POD& operator+=( f32 ); 
00117         Vector3POD& operator-=( f32 ); 
00118         Vector3POD& operator*=( f32 ); 
00119         Vector3POD& operator/=( f32 ); 
00120         Vector3POD& operator+=( const Vector3POD& ); 
00121         Vector3POD& operator-=( const Vector3POD& ); 
00122         Vector3POD& operator*=( const Vector3POD& ); 
00123         Vector3POD& operator/=( const Vector3POD& ); 
00124 
00125         
00126         //============================================================
00128 
00129         const Vector3POD min( const Vector3POD& )const; 
00130         const Vector3POD max( const Vector3POD& )const; 
00131 
00132         
00133         //============================================================
00135 
00136         const Vector3POD clamp( const Vector3POD& aMin , const Vector3POD& aMax )const; 
00137         const Vector3POD clampPositive()const; 
00138         const Vector3POD clampNegative()const; 
00139 
00140 
00141         //============================================================
00143 
00144         const Vector3POD abs()const; 
00145         const Vector3POD neg()const; 
00146 
00147 
00148         //============================================================
00150 
00151         f32  squareLength()const;                
00152         f32  length()const;                      
00153         f32  distance( const Vector3POD& )const; 
00154         bool isZero()const;                      
00155         bool isZeroStrict()const;                
00156         bool isUnit()const;                      
00157         const Vector3POD unit()const;            
00158         void unitAssign();                       
00159 
00160 
00161         //============================================================
00163 
00164         f32 dot( const Vector3POD& )const;                
00165         const Vector3POD cross( const Vector3POD& )const; 
00166 
00167 
00168         //============================================================
00170 
00171 
00172         const ShortString toShortString()const;
00174     };
00175 
00177     class Vector3 : public Vector3POD
00178     {
00179     public:
00180         //============================================================
00182 
00183         Vector3(); 
00184         Vector3( const Vector3POD& aXYZ ); 
00185         Vector3( f32 aV ); 
00186         Vector3( const Vector2POD& aXY , f32 aZ ); 
00187         Vector3( f32 aX , f32 aY , f32 aZ ); 
00188 
00189     };
00190     
00192     typedef Vector3POD Vec3;
00193 
00195     typedef Vector3POD Vector3fPOD;
00196     
00198     typedef Vec3 Vec3f;
00199 
00201     typedef Vector3 Vector3f;
00203 }
00204 //------------------------------------------------------------
00205 #endif
00206 // EOF
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 マクロ定義