GEL
2
GEL is a library for Geometry and Linear Algebra
|
00001 #ifndef __CGLA_VEC4D_H__ 00002 #define __CGLA_VEC4D_H__ 00003 00004 #include "Vec3d.h" 00005 #include "ArithVec4Float.h" 00006 00007 namespace CGLA { 00008 00015 class Vec4d: public ArithVec4Float<double,Vec4d> 00016 { 00017 public: 00018 00020 Vec4d(): ArithVec4Float<double,Vec4d>(0,0,0,0.0) {} 00021 00023 explicit Vec4d(double _a): ArithVec4Float<double,Vec4d>(_a,_a,_a,_a) {} 00024 00026 Vec4d(double _a, double _b, double _c, double _d): 00027 ArithVec4Float<double,Vec4d>(_a,_b,_c,_d) {} 00028 00030 Vec4d(double _a, double _b, double _c): 00031 ArithVec4Float<double,Vec4d>(_a,_b,_c,1.0) {} 00032 00034 explicit Vec4d(const Vec3d& v): 00035 ArithVec4Float<double,Vec4d>(v[0],v[1],v[2],1.0) {} 00036 00038 explicit Vec4d(const Vec3d& v,double _d): 00039 ArithVec4Float<double,Vec4d>(v[0],v[1],v[2],_d) {} 00040 00041 operator Vec3d() const 00042 { 00043 double k = 1.0/(*this)[3]; 00044 return Vec3d((*this)[0]*k,(*this)[1]*k,(*this)[2]*k); 00045 } 00046 }; 00047 } 00048 #endif 00049