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