Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

Vec3.cpp

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

Generated on Sun Jun 5 15:47:05 2005 for Defacto by  doxygen 1.4.3