00001 #include "glVector.h"
00002
00003 glVector::glVector()
00004 {
00005 data[0] = data[1] = data[2] = 0;
00006 }
00007
00008 glVector::glVector(float x, float y, float z)
00009 {
00010 data[0] = x;
00011 data[1] = y;
00012 data[2] = z;
00013 }
00014
00015 glVector::glVector(float new_data[3])
00016 {
00017 for(int i=0; i<3; i++)
00018 data[i] = new_data[i];
00019 }
00020
00021 glVector::glVector(glVector v1, glVector v2)
00022 {
00023 this->data[0] = v1.data[0] - v2.data[0];
00024 this->data[1] = v1.data[1] - v2.data[1];
00025 this->data[2] = v1.data[2] - v2.data[2];
00026 }
00027
00028 glVector glVector::operator%(glVector &v_2)
00029 {
00030 return glVector(data[1] * v_2.data[2] - data[2] * v_2.data[1],
00031 data[2] * v_2.data[0] - data[0] * v_2.data[2],
00032 data[0] * v_2.data[1] - data[1] * v_2.data[0]);
00033 }
00034
00035 glVector glVector::operator-(glVector v2)
00036 {
00037 return glVector(data[0] - v2.data[0], data[1] - v2.data[1], data[2] - v2.data[2]);
00038 }
00039
00040 glVector glVector::operator+(glVector v2)
00041 {
00042 return glVector(data[0] + v2.data[0], data[1] + v2.data[1], data[2] + v2.data[2]);
00043 }
00044
00045 glVector glVector::operator+=(glVector v2)
00046 {
00047 return glVector(data[0] += v2.data[0], data[1] += v2.data[1], data[2] += v2.data[2]);
00048 }
00049
00050 glVector glVector::operator=(glVector v2)
00051 {
00052 data[0] = v2.data[0];
00053 data[1] = v2.data[1];
00054 data[2] = v2.data[2];
00055 }
00056
00057 glVector glVector::SetVector(glVector new_vec)
00058 {
00059 data[0] = new_vec.data[0];
00060 data[1] = new_vec.data[1];
00061 data[2] = new_vec.data[2];
00062 return *this;
00063 }
00064
00065 glVector glVector::operator*(float multiplier)
00066 {
00067 return glVector(data[0] * multiplier, data[1] * multiplier, data[2] * multiplier);
00068 }
00069
00070 glVector glVector::operator/(float multiplier)
00071 {
00072 return glVector(data[0] / multiplier, data[1] / multiplier, data[2] / multiplier);
00073 }
00074
00075 glVector glVector::operator!()
00076 {
00077 if(length() != 0)
00078 return (*this) * float(1.0 / length());
00079 return glVector(0,0,0);
00080 }
00081
00082 float glVector::length()
00083 {
00084 return sqrt(data[0] * data[0] + data[1] * data[1] + data[2] * data[2]);
00085 }
00086
00087 float glVector::operator*(glVector v2)
00088 {
00089 return (data[0] * v2.data[0] + data[1] * v2.data[1] + data[2] * v2.data[2]);
00090 }
00091
00092 glVector glVector::ProjectOnto(glVector v2)
00093 {
00094 return !(v2) * (((*this)*v2)/v2.length());
00095 }