00001 #ifndef MATH_VECTOR4_H
00002 #define MATH_VECTOR4_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00033 #include <iosfwd>
00034 #include <string>
00035
00036 #include <glt/config.h>
00037 #include <math/real.h>
00038
00040
00046 class Vector4
00047 {
00048 friend std::ostream &operator<<(std::ostream &os, const Vector4 &x);
00049 friend std::istream &operator>>(std::istream &is, Vector4 &x);
00050
00051 public:
00053 Vector4();
00055 Vector4(const Vector4 &v);
00057 Vector4(const real x, const real y,const real z,const real w = 0.0);
00059 Vector4(const float *v);
00061 Vector4(const double *v);
00063 Vector4(const std::string &str);
00064
00066 real &x();
00068 const real &x() const;
00069
00071 real &y();
00073 const real &y() const;
00074
00076 real &z();
00078 const real &z() const;
00079
00081 real &w();
00083 const real &w() const;
00084
00086 real &operator[](const int i);
00088 const real &operator[](const int i) const;
00089
00091 operator real *();
00092
00093 protected:
00095 real _vector[4];
00096 };
00097
00098 #endif