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

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