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