Lumino.Math
D:/Proj/Lumino.Math/include/Lumino/Math/Vector2.h
00001 
00002 #ifndef LUMINO_MATH_VECTOR2_H
00003 #define LUMINO_MATH_VECTOR2_H
00004 
00005 #include <stdio.h>
00006 #include "Common.h"
00007 
00008 namespace Lumino
00009 {
00010 class Vector4;
00011 class Matrix;
00012 
00016 class LUMINO_EXPORT Vector2
00017 {
00018 public:
00019 
00020     float   X;      
00021     float   Y;      
00022 
00023 public:
00024 
00025     static const Vector2   Zero;        
00026     static const Vector2   UnitX;       
00027     static const Vector2   UnitY;       
00028     static const Vector2   One;         
00029 
00030 public:
00031 
00035     Vector2();
00036 
00040     Vector2(float x, float y);
00041 
00042 public:
00043 
00047     void Set(float x, float y);
00048 
00052     float GetLength() const;
00053 
00057     float GetLengthSquared() const;
00058 
00063     void Normalize();
00064 
00070     void TransformCoord(const Matrix& mat);
00071     
00075     bool IsNaNOrInf() const;
00076 
00083     void Print(const char* format = NULL, FILE* stream = NULL) const;
00084 
00085 public:
00086 
00092     static Vector2 Normalize(const Vector2& vec);
00093 
00100     static float Dot(const Vector2& vec1, const Vector2& vec2);
00101 
00108     static Vector2 Min(const Vector2& vec1, const Vector2& vec2);
00109 
00116     static Vector2 Max(const Vector2& vec1, const Vector2& vec2);
00117 
00124     static Vector4 Transform(const Vector2& vec, const Matrix& mat);
00125 
00133     static Vector2 TransformCoord(const Vector2& vec, const Matrix& mat);
00134 
00143     static Vector2 Lerp(const Vector2& start, const Vector2& end, float t);
00144 
00155     static Vector2 Hermite(const Vector2& v1, const Vector2& a1, const Vector2& v2, const Vector2& a2, float t);
00156 
00167     static Vector2 CatmullRom(const Vector2& vec1, const Vector2& vec2, const Vector2& vec3, const Vector2& vec4, float t);
00168 
00169 public:
00170 
00171     Vector2& operator += (const Vector2& v);
00172     Vector2& operator += (float v);
00173     Vector2& operator -= (const Vector2& v);
00174     Vector2& operator -= (float v);
00175     Vector2& operator *= (const Vector2& v);
00176     Vector2& operator *= (float v);
00177     Vector2& operator /= (const Vector2& v);
00178     Vector2& operator /= (float v);
00179 
00180     friend Vector2 operator + (const Vector2& v1,   const Vector2& v2);
00181     friend Vector2 operator + (const Vector2& v1,   float v2);
00182     friend Vector2 operator + (float v1,            const Vector2& v2);
00183     friend Vector2 operator - (const Vector2& v1,   const Vector2& v2);
00184     friend Vector2 operator - (const Vector2& v1,   float v2);
00185     friend Vector2 operator - (float v1,            const Vector2& v2);
00186     friend Vector2 operator * (const Vector2& v1,   const Vector2& v2);
00187     friend Vector2 operator * (const Vector2& v1,   float v2);
00188     friend Vector2 operator * (float v1,            const Vector2& v2);
00189     friend Vector2 operator / (const Vector2& v1,   const Vector2& v2);
00190     friend Vector2 operator / (const Vector2& v1,   float v2);
00191     friend Vector2 operator / (float v1,            const Vector2& v2);
00192 
00193     friend Vector2 operator - (const Vector2& v1);
00194 
00195     bool operator == (const Vector2& v) const;
00196     bool operator != (const Vector2& v) const;
00197 
00198 };
00199 
00200 } // namespace Lumino
00201 
00202 #include "Vector2.inl"
00203 
00204 #endif // LUMINO_MATH_VECTOR2_H
 All Classes Functions Variables Friends