00001 #ifndef HCOORD4D_H_ 00002 #define HCOORD4D_H_ 00003 00004 #include "Point3D.h" 00005 #include "Vec3D.h" 00006 00007 namespace rcrt 00008 { 00009 00010 class HCoord4D 00011 { 00012 private: 00013 float values[4]; 00014 void assign(const HCoord4D& vec); 00015 00016 public: 00017 HCoord4D(); 00018 HCoord4D(float xc, float yc, float zc, float wc); 00019 HCoord4D(const HCoord4D& coords); 00020 HCoord4D(const Point3D& p); 00021 HCoord4D(const Vec3D& vec); 00022 virtual ~HCoord4D(); 00023 00024 const HCoord4D& operator= (const HCoord4D& coords); 00025 HCoord4D operator+ (const HCoord4D& coords) const; 00026 HCoord4D operator- (const HCoord4D& coords) const; 00027 float operator* (const HCoord4D& coords) const; 00028 00033 const HCoord4D& normalize(); 00034 00038 HCoord4D normalized() const; 00039 00044 bool isNormalized() const; 00045 00049 float norm() const; 00050 00054 Point3D toPoint3D() const; 00055 00056 const float& x() const; 00057 const float& y() const; 00058 const float& z() const; 00059 const float& w() const; 00060 }; 00061 00062 } 00063 00064 #endif /*HCOORD4D_H_*/