GEL  2
GEL is a library for Geometry and Linear Algebra
/Users/jab/Documents/Teaching/02585/GEL2_and_demos/GEL/src/CGLA/Vec4d.h
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 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations