00001 00007 #include "Vector.h" 00008 00009 /******************************************************************** 00010 * Constructor 00011 */ 00012 Vec2::Vec2() { 00013 x = y = 0.0f; 00014 } 00015 00016 /******************************************************************** 00017 * Constructor (float xyz) 00018 */ 00019 Vec2::Vec2(const float xy) { 00020 x = y = xy; 00021 } 00022 00023 /******************************************************************** 00024 * Constructor (float x, float y, float z) 00025 */ 00026 Vec2::Vec2(const float xx, const float yy) { 00027 x = xx; 00028 y = yy; 00029 } 00030 00031 /******************************************************************** 00032 * Destructor 00033 */ 00034 Vec2::~Vec2() { 00035 00036 } 00037 00038 /******************************************************************** 00039 * Length (Magnitude) 00040 */ 00041 float Vec2::length() { 00042 return sqrtf(x*x + y*y); 00043 } 00044 00045 /******************************************************************** 00046 * Normalize 00047 */ 00048 Vec2 Vec2::normalize() { 00049 float len = length(); 00050 if (len > 0) 00051 return *this / len; 00052 return *this; 00053 } 00054 00055 /******************************************************************** 00056 * Operator + 00057 */ 00058 Vec2 Vec2::operator + (const Vec2 &v) { 00059 return Vec2(x+v.x, y+v.y); 00060 } 00061 00062 /******************************************************************** 00063 * Operator - 00064 */ 00065 Vec2 Vec2::operator - (const Vec2 &v) { 00066 return Vec2(x-v.x, y-v.y); 00067 } 00068 00069 /******************************************************************** 00070 * Operator - 00071 */ 00072 Vec2 Vec2::operator - () { 00073 return Vec2(-x, -y); 00074 } 00075 00076 /******************************************************************** 00077 * Operator * 00078 */ 00079 Vec2 Vec2::operator * (const float s) { 00080 return Vec2(x*s, y*s); 00081 } 00082 00083 /******************************************************************** 00084 * Operator * 00085 */ 00086 Vec2 Vec2::operator * (const Vec2 &v) { 00087 return Vec2(x*v.x, y*v.y); 00088 } 00089 00090 /******************************************************************** 00091 * Cross product (operator ^) 00092 */ 00101 /******************************************************************** 00102 * Operator / 00103 */ 00104 Vec2 Vec2::operator / (const float s) { 00105 return Vec2(x/s, y/s); 00106 } 00107 00108 /******************************************************************** 00109 * Operator / 00110 */ 00111 Vec2 Vec2::operator / (const Vec2 &v) { 00112 return Vec2(x/v.x, y/v.y); 00113 } 00114 00115 /******************************************************************** 00116 * Operator = 00117 */ 00118 void Vec2::operator = (const Vec2 &v) { 00119 x = v.x; 00120 y = v.y; 00121 } 00122 00123 /******************************************************************** 00124 * Operator += 00125 */ 00126 void Vec2::operator += (const Vec2 &v) { 00127 x += v.x; 00128 y += v.y; 00129 } 00130 00131 /******************************************************************** 00132 * Operator -= 00133 */ 00134 void Vec2::operator -= (const Vec2 &v) { 00135 x -= v.x; 00136 y -= v.y; 00137 } 00138 00139 /******************************************************************** 00140 * Operator *= 00141 */ 00142 void Vec2::operator *= (const float s) { 00143 x *= s; 00144 y *= s; 00145 } 00146 00147 /******************************************************************** 00148 * Operator *= 00149 */ 00150 void Vec2::operator *= (const Vec2 &v) { 00151 x *= v.x; 00152 y *= v.y; 00153 } 00154 00155 /******************************************************************** 00156 * Operator /= 00157 */ 00158 void Vec2::operator /= (const float s) { 00159 x /= s; 00160 y /= s; 00161 } 00162 00163 /******************************************************************** 00164 * Operator /= 00165 */ 00166 void Vec2::operator /= (const Vec2 &v) { 00167 x /= v.x; 00168 y /= v.y; 00169 } 00170 00171 /******************************************************************** 00172 * Operator > 00173 */ 00174 bool Vec2::operator > (Vec2 &v) { 00175 return length() > v.length(); 00176 } 00177 00178 /******************************************************************** 00179 * Operator == 00180 */ 00181 bool Vec2::operator == (const Vec2 &v) { 00182 return (x == v.x) && (y == v.y); 00183 } 00184 00185 /******************************************************************** 00186 * Operator != 00187 */ 00188 bool Vec2::operator != (const Vec2 &v) { 00189 return (x != v.x) || (y != v.y); 00190 }