CrossFramework Library

XBase/Vector2.hpp

説明を見る。
00001 
00006 #if defined(XBASE_INCLUDED_VECTOR2_HPP)
00007 #else
00008 #define XBASE_INCLUDED_VECTOR2_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     struct Vector4POD;
00019 }
00020 
00021 //------------------------------------------------------------
00022 namespace XBase {
00024 
00025 
00026     typedef Vector2POD Vec2;
00027 
00034     struct Vector2POD
00035     {
00036         //============================================================
00038 
00039         static const Vector2POD Zero();     
00040         static const Vector2POD One();      
00041         static const Vector2POD Min();      
00042         static const Vector2POD Max();      
00043         static const Vector2POD UnitX();    
00044         static const Vector2POD UnitY();    
00045         static const Vector2POD NegUnitX(); 
00046         static const Vector2POD NegUnitY(); 
00047 
00048 
00049         //============================================================
00051 
00052         f32 x; 
00053         f32 y; 
00054 
00055         
00056         //============================================================
00058 
00059         const Vector2POD toX0()const;
00060         const Vector2POD to0Y()const;
00061         const Vector2POD toXX()const;
00062         const Vector2POD toYX()const;
00063         const Vector2POD toYY()const;
00064         const Vector3POD toXY0()const;
00065         const Vector3POD toXXX()const;
00066         const Vector3POD toYYY()const;
00067         const Vector4POD toXY00()const;
00068         const Vector4POD toXXXX()const;
00069         const Vector4POD toYYYY()const;
00071 
00072         //============================================================
00074 
00075         bool equals( const Vector2POD& )const;       
00076         bool equalsStrict( const Vector2POD& )const; 
00077 
00078 
00079         //============================================================
00081 
00082         const Vector2POD add( f32 )const; 
00083         const Vector2POD sub( f32 )const; 
00084         const Vector2POD mul( f32 )const; 
00085         const Vector2POD div( f32 )const; 
00086         const Vector2POD add( const Vector2POD& )const; 
00087         const Vector2POD sub( const Vector2POD& )const; 
00088         const Vector2POD mul( const Vector2POD& )const; 
00089         const Vector2POD div( const Vector2POD& )const; 
00090         void addAssign( f32 ); 
00091         void subAssign( f32 ); 
00092         void mulAssign( f32 ); 
00093         void divAssign( f32 ); 
00094         void addAssign( const Vector2POD& ); 
00095         void subAssign( const Vector2POD& ); 
00096         void mulAssign( const Vector2POD& ); 
00097         void divAssign( const Vector2POD& ); 
00098 
00099         
00100         //============================================================
00102 
00103         const Vector2POD operator+( f32 )const; 
00104         const Vector2POD operator-( f32 )const; 
00105         const Vector2POD operator*( f32 )const; 
00106         const Vector2POD operator/( f32 )const; 
00107         const Vector2POD operator+( const Vector2POD& )const; 
00108         const Vector2POD operator-( const Vector2POD& )const; 
00109         const Vector2POD operator*( const Vector2POD& )const; 
00110         const Vector2POD operator/( const Vector2POD& )const; 
00111         const Vector2POD operator-()const; 
00112         Vector2POD& operator+=( f32 ); 
00113         Vector2POD& operator-=( f32 ); 
00114         Vector2POD& operator*=( f32 ); 
00115         Vector2POD& operator/=( f32 ); 
00116         Vector2POD& operator+=( const Vector2POD& ); 
00117         Vector2POD& operator-=( const Vector2POD& ); 
00118         Vector2POD& operator*=( const Vector2POD& ); 
00119         Vector2POD& operator/=( const Vector2POD& ); 
00120 
00121         
00122         //============================================================
00124 
00125         const Vector2POD min( const Vector2POD& )const; 
00126         const Vector2POD max( const Vector2POD& )const; 
00127 
00128         
00129         //============================================================
00131 
00132         const Vector2POD clamp( const Vector2POD& aMin , const Vector2POD& aMax )const; 
00133         const Vector2POD clampPositive()const; 
00134         const Vector2POD clampNegative()const; 
00135 
00136 
00137         //============================================================
00139 
00140         const Vector2POD abs()const; 
00141         const Vector2POD neg()const; 
00142 
00143 
00144         //============================================================
00146 
00147         f32  squareLength()const;                
00148         f32  length()const;                      
00149         f32  distance( const Vector2POD& )const; 
00150         bool isZero()const;                      
00151         bool isZeroStrict()const;                
00152         bool isUnit()const;                      
00153         const Vector2POD unit()const;            
00154         void unitAssign();                       
00155 
00156 
00157         //============================================================
00159 
00160         f32 dot( const Vector2POD& )const;     
00161         f32 cross( const Vector2POD& )const;   
00162 
00163 
00164         //============================================================
00166 
00167 
00168         const ShortString toShortString()const;
00170     };
00171 
00173     class Vector2 : public Vector2POD
00174     {
00175     public:
00176         //============================================================
00178 
00179         Vector2(); 
00180         Vector2( const Vector2POD& aXY ); 
00181         Vector2( f32 aV ); 
00182         Vector2( f32 aX , f32 aY ); 
00183 
00184     };
00185     
00187     typedef Vector2POD Vec2;
00188 
00190     typedef Vector2POD Vector2fPOD;
00191     
00193     typedef Vec2 Vec2f;
00194     
00196     typedef Vector2 Vector2f;
00198 }
00199 //------------------------------------------------------------
00200 #endif
00201 // EOF
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 マクロ定義