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