Main Page   Modules   Class Hierarchy   Compound List   File List   Compound Members   File Members   Related Pages   Examples  

math/vector4.cpp

Go to the documentation of this file.
00001 #include "vector4.h"
00002 
00007 #include <misc/string.h>
00008 
00009 #include <cassert>
00010 #include <cmath>
00011 
00012 #include <iostream>
00013 #include <algorithm>
00014 using namespace std;
00015 
00016 Vector4::Vector4()
00017 {
00018     _vector[0] = _vector[1] = _vector[2] = _vector[3] = 0.0;
00019 }
00020 
00021 Vector4::Vector4(const Vector4 &v)
00022 {
00023     _vector[0] = v._vector[0];
00024     _vector[1] = v._vector[1];
00025     _vector[2] = v._vector[2];
00026     _vector[3] = v._vector[3];
00027 }
00028 
00029 Vector4::Vector4(const real x, const real y, const real z,const real w)
00030 {
00031     _vector[0] = x;
00032     _vector[1] = y;
00033     _vector[2] = z;
00034     _vector[3] = w;
00035 }
00036 
00037 Vector4::Vector4(const float *v)
00038 {
00039     _vector[0] = v[0];
00040     _vector[1] = v[1];
00041     _vector[2] = v[2];
00042     _vector[3] = v[3];
00043 }
00044 
00045 Vector4::Vector4(const double *v)
00046 {
00047     _vector[0] = v[0];
00048     _vector[1] = v[1];
00049     _vector[2] = v[2];
00050     _vector[3] = v[3];
00051 }
00052 
00053 Vector4::Vector4(const string &str)
00054 {
00055     #ifndef NDEBUG
00056     const int n = 
00057     #endif
00058         atoc(str,atof,"+-eE.0123456789",_vector+0,_vector+4);
00059         
00060     assert(n==4);
00061 }
00062 
00063 const real &
00064 Vector4::operator[](const int i) const
00065 {
00066     assert(i>=0 && i<4);
00067     return _vector[i];
00068 }
00069 
00070 real &
00071 Vector4::operator[](const int i)
00072 {
00073     assert(i>=0 && i<4);
00074     return _vector[i];
00075 }
00076 
00077 Vector4::operator real *()
00078 {
00079     return (real *) _vector;
00080 }
00081 
00082       real &Vector4::x()       { return _vector[0]; }
00083 const real &Vector4::x() const { return _vector[0]; }
00084       real &Vector4::y()       { return _vector[1]; }
00085 const real &Vector4::y() const { return _vector[1]; }
00086       real &Vector4::z()       { return _vector[2]; }
00087 const real &Vector4::z() const { return _vector[2]; }
00088       real &Vector4::w()       { return _vector[3]; }
00089 const real &Vector4::w() const { return _vector[3]; }
00090 
00091 
00093 
00099 ostream &
00100 operator<<(ostream &os, const Vector4 &x)
00101 {
00102     os << x[0] << '\t';
00103     os << x[1] << '\t';
00104     os << x[2] << '\t';
00105     os << x[3];
00106 
00107     return os;
00108 }
00109 
00115 istream &
00116 operator>>(istream &is, Vector4 &x)
00117 {
00118     is >> x[0];
00119     is >> x[1];
00120     is >> x[2];
00121     is >> x[3];
00122 
00123     return is;
00124 }
00125 

Generated on Tue Nov 5 11:11:04 2002 for GLT by doxygen1.2.18