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 UnitX();    
00036         static const Vector3POD UnitY();    
00037         static const Vector3POD UnitZ();    
00038         static const Vector3POD NegUnitX(); 
00039         static const Vector3POD NegUnitY(); 
00040         static const Vector3POD NegUnitZ(); 
00041 
00042 
00043         //============================================================
00045 
00046         f32 x; 
00047         f32 y; 
00048         f32 z; 
00049 
00050 
00051         //============================================================
00053 
00054         const Vector2POD toXY()const;
00055         const Vector2POD toXX()const;
00056         const Vector2POD toYY()const;
00057         const Vector2POD toZZ()const;
00058         const Vector3POD toXOO()const;
00059         const Vector3POD toXYO()const;
00060         const Vector3POD toOYO()const;
00061         const Vector3POD toOYZ()const;
00062         const Vector3POD toOOZ()const;
00063         const Vector3POD toXXX()const;
00064         const Vector3POD toYYY()const;
00065         const Vector3POD toZZZ()const;
00066         const Vector4POD toXYZO()const;
00067         const Vector4POD toXXXX()const;
00068         const Vector4POD toYYYY()const;
00069         const Vector4POD toZZZZ()const;
00071 
00072         //============================================================
00074 
00075         bool equals( const Vector3POD& )const;       
00076         bool equalsStrict( const Vector3POD& )const; 
00077 
00078 
00079         //============================================================
00081 
00082         const Vector3POD add( f32 )const; 
00083         const Vector3POD sub( f32 )const; 
00084         const Vector3POD mul( f32 )const; 
00085         const Vector3POD div( f32 )const; 
00086         const Vector3POD add( const Vector3POD& )const; 
00087         const Vector3POD sub( const Vector3POD& )const; 
00088         const Vector3POD mul( const Vector3POD& )const; 
00089         const Vector3POD div( const Vector3POD& )const; 
00090         const Vector3POD neg()const; 
00091         void addAssign( f32 ); 
00092         void subAssign( f32 ); 
00093         void mulAssign( f32 ); 
00094         void divAssign( f32 ); 
00095         void addAssign( const Vector3POD& ); 
00096         void subAssign( const Vector3POD& ); 
00097         void mulAssign( const Vector3POD& ); 
00098         void divAssign( const Vector3POD& ); 
00099 
00100         
00101         //============================================================
00103 
00104         const Vector3POD operator+( f32 )const; 
00105         const Vector3POD operator-( f32 )const; 
00106         const Vector3POD operator*( f32 )const; 
00107         const Vector3POD operator/( f32 )const; 
00108         const Vector3POD operator+( const Vector3POD& )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; 
00113         Vector3POD& operator+=( f32 ); 
00114         Vector3POD& operator-=( f32 ); 
00115         Vector3POD& operator*=( f32 ); 
00116         Vector3POD& operator/=( f32 ); 
00117         Vector3POD& operator+=( const Vector3POD& ); 
00118         Vector3POD& operator-=( const Vector3POD& ); 
00119         Vector3POD& operator*=( const Vector3POD& ); 
00120         Vector3POD& operator/=( const Vector3POD& ); 
00121 
00122 
00123         //============================================================
00125 
00126         f32  squareLength()const;                
00127         f32  length()const;                      
00128         f32  distance( const Vector3POD& )const; 
00129         bool isZero()const;                      
00130         bool isZeroStrict()const;                
00131         bool isUnit()const;                      
00132         const Vector3POD unit()const;            
00133         void unitAssign();                       
00134 
00135 
00136         //============================================================
00138 
00139         f32 dot( const Vector3POD& )const;                
00140         const Vector3POD cross( const Vector3POD& )const; 
00141 
00142 
00143         //============================================================
00145 
00146 
00147         const ShortString toShortString()const;
00149     };
00150 
00152     class Vector3 : public Vector3POD
00153     {
00154     public:
00155         //============================================================
00157 
00158         Vector3(); 
00159         Vector3( const Vector3POD& aXYZ ); 
00160         Vector3( f32 aX , f32 aY , f32 aZ ); 
00161 
00162     };
00164 }
00165 //------------------------------------------------------------
00166 #endif
00167 // EOF
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 マクロ定義