Changeset 15 in flair-src for trunk/lib/FlairCore/src/Vector2D.cpp
- Timestamp:
- Apr 8, 2016, 3:40:57 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/lib/FlairCore/src/Vector2D.cpp
r2 r15 20 20 #include <math.h> 21 21 22 namespace flair { namespace core { 22 namespace flair { 23 namespace core { 23 24 24 Vector2D::Vector2D(float inX,float inY): x(inX),y(inY) { 25 Vector2D::Vector2D(float inX, float inY) : x(inX), y(inY) {} 26 27 Vector2D::~Vector2D() {} 28 29 Vector2D &Vector2D::operator=(const Vector2D &vector) { 30 x = vector.x; 31 y = vector.y; 32 return (*this); 25 33 } 26 34 27 Vector2D ::~Vector2D() {28 35 Vector2D operator+(const Vector2D &vectorA, const Vector2D &vectorB) { 36 return Vector2D(vectorA.x + vectorB.x, vectorA.y + vectorB.y); 29 37 } 30 38 31 Vector2D &Vector2D::operator=(const Vector2D &vector) { 32 x=vector.x; 33 y=vector.y; 34 return (*this); 39 Vector2D operator-(const Vector2D &vectorA, const Vector2D &vectorB) { 40 return Vector2D(vectorA.x - vectorB.x, vectorA.y - vectorB.y); 35 41 } 36 42 37 Vector2D operator+ (const Vector2D &vectorA,const Vector2D &vectorB) { 38 return Vector2D(vectorA.x + vectorB.x,vectorA.y + vectorB.y); 43 Vector2D operator/(const Vector2D &vector, float coeff) { 44 if (coeff != 0) { 45 return Vector2D(vector.x / coeff, vector.y / coeff); 46 } else { 47 return Vector2D(0, 0); 48 } 39 49 } 40 50 41 Vector2D operator - (const Vector2D &vectorA,const Vector2D &vectorB) {42 return Vector2D(vectorA.x - vectorB.x,vectorA.y - vectorB.y);51 Vector2D operator*(const Vector2D &vector, float coeff) { 52 return Vector2D(vector.x * coeff, vector.y * coeff); 43 53 } 44 54 45 Vector2D operator/ (const Vector2D &vector, float coeff) { 46 if(coeff!=0) { 47 return Vector2D(vector.x/ coeff,vector.y/ coeff); 48 } else { 49 return Vector2D(0,0); 50 } 51 } 52 53 Vector2D operator * (const Vector2D &vector, float coeff) { 54 return Vector2D(vector.x * coeff,vector.y * coeff); 55 } 56 57 Vector2D operator * (float coeff,const Vector2D &vector) { 58 return Vector2D(vector.x * coeff,vector.y * coeff); 55 Vector2D operator*(float coeff, const Vector2D &vector) { 56 return Vector2D(vector.x * coeff, vector.y * coeff); 59 57 } 60 58 61 59 void Vector2D::Rotate(float value) { 62 63 xTmp=x*cosf(value)-y*sinf(value);64 y=x*sinf(value)+y*cosf(value);65 x=xTmp;60 float xTmp; 61 xTmp = x * cosf(value) - y * sinf(value); 62 y = x * sinf(value) + y * cosf(value); 63 x = xTmp; 66 64 } 67 65 68 void Vector2D::RotateDeg(float value) { 69 Rotate(Euler::ToRadian(value)); 66 void Vector2D::RotateDeg(float value) { Rotate(Euler::ToRadian(value)); } 67 68 float Vector2D::GetNorm(void) const { return sqrt(x * x + y * y); } 69 70 void Vector2D::Normalize(void) { 71 float n = GetNorm(); 72 if (n != 0) { 73 x = x / n; 74 y = y / n; 75 } 70 76 } 71 77 72 float Vector2D::GetNorm(void) const { 73 return sqrt(x*x+y*y); 78 void Vector2D::Saturate(Vector2D min, Vector2D max) { 79 if (x < min.x) 80 x = min.x; 81 if (x > max.x) 82 x = max.x; 83 84 if (y < min.y) 85 y = min.y; 86 if (y > max.y) 87 y = max.y; 74 88 } 75 89 76 void Vector2D::Normalize(void) { 77 float n=GetNorm(); 78 if(n!=0) { 79 x=x/n; 80 y=y/n; 81 } 82 } 83 84 void Vector2D::Saturate(Vector2D min,Vector2D max) { 85 if(x<min.x) x=min.x; 86 if(x>max.x) x=max.x; 87 88 if(y<min.y) y=min.y; 89 if(y>max.y) y=max.y; 90 } 91 92 void Vector2D::Saturate(float min,float max) { 93 Saturate(Vector2D(min,min),Vector2D(max,max)); 90 void Vector2D::Saturate(float min, float max) { 91 Saturate(Vector2D(min, min), Vector2D(max, max)); 94 92 } 95 93 96 94 void Vector2D::Saturate(const Vector2D &value) { 97 float x=fabs(value.x);98 float y=fabs(value.y);99 Saturate(Vector2D(-x,-y),Vector2D(x,y));95 float x = fabs(value.x); 96 float y = fabs(value.y); 97 Saturate(Vector2D(-x, -y), Vector2D(x, y)); 100 98 } 101 99 102 100 void Vector2D::Saturate(float value) { 103 float sat=fabs(value);104 Saturate(Vector2D(-sat,-sat),Vector2D(sat,sat));101 float sat = fabs(value); 102 Saturate(Vector2D(-sat, -sat), Vector2D(sat, sat)); 105 103 } 106 104
Note:
See TracChangeset
for help on using the changeset viewer.