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 
00028     struct Vector3POD
00029     {
00030         //============================================================
00032 
00033         static const Vector3POD Zero();     
00034         static const Vector3POD One();      
00035         static const Vector3POD Min();      
00036         static const Vector3POD Max();      
00037         static const Vector3POD UnitX();    
00038         static const Vector3POD UnitY();    
00039         static const Vector3POD UnitZ();    
00040         static const Vector3POD NegUnitX(); 
00041         static const Vector3POD NegUnitY(); 
00042         static const Vector3POD NegUnitZ(); 
00043 
00044 
00045         //============================================================
00047 
00048         f32 x; 
00049         f32 y; 
00050         f32 z; 
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 Vector3POD toX00()const;
00061         const Vector3POD toXY0()const;
00062         const Vector3POD to0Y0()const;
00063         const Vector3POD to0YZ()const;
00064         const Vector3POD to00Z()const;
00065         const Vector3POD toXXX()const;
00066         const Vector3POD toYYY()const;
00067         const Vector3POD toZZZ()const;
00068         const Vector4POD toXYZ0()const;
00069         const Vector4POD toXXXX()const;
00070         const Vector4POD toYYYY()const;
00071         const Vector4POD toZZZZ()const;
00073 
00074         //============================================================
00076 
00077         bool equals( const Vector3POD& )const;       
00078         bool equalsStrict( const Vector3POD& )const; 
00079 
00080 
00081         //============================================================
00083 
00084         const Vector3POD add( f32 )const; 
00085         const Vector3POD sub( f32 )const; 
00086         const Vector3POD mul( f32 )const; 
00087         const Vector3POD div( f32 )const; 
00088         const Vector3POD add( const Vector3POD& )const; 
00089         const Vector3POD sub( const Vector3POD& )const; 
00090         const Vector3POD mul( const Vector3POD& )const; 
00091         const Vector3POD div( const Vector3POD& )const; 
00092         void addAssign( f32 ); 
00093         void subAssign( f32 ); 
00094         void mulAssign( f32 ); 
00095         void divAssign( f32 ); 
00096         void addAssign( const Vector3POD& ); 
00097         void subAssign( const Vector3POD& ); 
00098         void mulAssign( const Vector3POD& ); 
00099         void divAssign( const Vector3POD& ); 
00100 
00101         
00102         //============================================================
00104 
00105         const Vector3POD operator+( f32 )const; 
00106         const Vector3POD operator-( f32 )const; 
00107         const Vector3POD operator*( f32 )const; 
00108         const Vector3POD operator/( f32 )const; 
00109         const Vector3POD operator+( const Vector3POD& )const; 
00110         const Vector3POD operator-( const Vector3POD& )const; 
00111         const Vector3POD operator*( const Vector3POD& )const; 
00112         const Vector3POD operator/( const Vector3POD& )const; 
00113         const Vector3POD operator-()const; 
00114         Vector3POD& operator+=( f32 ); 
00115         Vector3POD& operator-=( f32 ); 
00116         Vector3POD& operator*=( f32 ); 
00117         Vector3POD& operator/=( f32 ); 
00118         Vector3POD& operator+=( const Vector3POD& ); 
00119         Vector3POD& operator-=( const Vector3POD& ); 
00120         Vector3POD& operator*=( const Vector3POD& ); 
00121         Vector3POD& operator/=( const Vector3POD& ); 
00122 
00123         
00124         //============================================================
00126 
00127         const Vector3POD min( const Vector3POD& )const; 
00128         const Vector3POD max( const Vector3POD& )const; 
00129 
00130         
00131         //============================================================
00133 
00134         const Vector3POD clamp( const Vector3POD& aMin , const Vector3POD& aMax )const; 
00135         const Vector3POD clampPositive()const;  
00136         const Vector3POD clampNegative()const; 
00137 
00138 
00139         //============================================================
00141 
00142         const Vector3POD abs()const; 
00143         const Vector3POD neg()const; 
00144 
00145 
00146         //============================================================
00148 
00149         f32  squareLength()const;                
00150         f32  length()const;                      
00151         f32  distance( const Vector3POD& )const; 
00152         bool isZero()const;                      
00153         bool isZeroStrict()const;                
00154         bool isUnit()const;                      
00155         const Vector3POD unit()const;            
00156         void unitAssign();                       
00157 
00158 
00159         //============================================================
00161 
00162         f32 dot( const Vector3POD& )const;                
00163         const Vector3POD cross( const Vector3POD& )const; 
00164 
00165 
00166         //============================================================
00168 
00169 
00170         const ShortString toShortString()const;
00172     };
00173 
00175     class Vector3 : public Vector3POD
00176     {
00177     public:
00178         //============================================================
00180 
00181         Vector3(); 
00182         Vector3( const Vector3POD& aXYZ ); 
00183         Vector3( f32 aX , f32 aY , f32 aZ ); 
00184 
00185     };
00186     
00188     typedef Vector3POD Vector3fPOD;
00189     
00191     typedef Vector3 Vector3f;
00193 }
00194 //------------------------------------------------------------
00195 #endif
00196 // EOF
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 マクロ定義