#ifndef _ENGINE_VECTOR3D_HPP_ #define _ENGINE_VECTOR3D_HPP_ #ifndef _COMMON_ASSERT_HPP_ #include #endif #ifndef _ENGINE_POINT3D_HPP_ #include #endif #ifndef _ENGINE_VECTOR_HPP_ #include #endif class Vector3D { public: enum {VectorPoints=4}; Vector3D(void); Vector3D(const Vector3D &someVector3D); Vector3D(const Point3D &firstPoint,const Point3D &secondPoint,const Point3D &thirdPoint,const Point3D &fourthPoint); virtual ~Vector3D(); Vector3D &operator=(const Vector3D &someVector3D); WORD operator==(const Vector3D &someVector3D)const; Point3D &operator[](WORD vectorIndex); const Vector &getNormal(void)const; void setNormal(const Vector &normal); void normalize(void); private: Point3D mVector3D[VectorPoints]; Vector mNormalVector; }; inline Vector3D::Vector3D(void) { } inline Vector3D::Vector3D(const Vector3D &someVector3D) { mVector3D[0]=((Vector3D&)someVector3D)[0]; mVector3D[1]=((Vector3D&)someVector3D)[1]; mVector3D[2]=((Vector3D&)someVector3D)[2]; mVector3D[3]=((Vector3D&)someVector3D)[3]; } inline Vector3D::Vector3D(const Point3D &firstPoint,const Point3D &secondPoint,const Point3D &thirdPoint,const Point3D &fourthPoint) { mVector3D[0]=firstPoint; mVector3D[1]=secondPoint; mVector3D[2]=thirdPoint; mVector3D[3]=fourthPoint; } inline Vector3D::~Vector3D() { } inline Vector3D &Vector3D::operator=(const Vector3D &someVector3D) { mVector3D[0]=((Vector3D&)someVector3D)[0]; mVector3D[1]=((Vector3D&)someVector3D)[1]; mVector3D[2]=((Vector3D&)someVector3D)[2]; mVector3D[3]=((Vector3D&)someVector3D)[3]; return *this; } inline WORD Vector3D::operator==(const Vector3D &someVector3D)const { return (mVector3D[0]==((Vector3D&)someVector3D)[0]&& mVector3D[1]==((Vector3D&)someVector3D)[1]&& mVector3D[2]==((Vector3D&)someVector3D)[2]&& mVector3D[3]==((Vector3D&)someVector3D)[3]); } inline Point3D &Vector3D::operator[](WORD vectorIndex) { return mVector3D[vectorIndex]; } inline const Vector &Vector3D::getNormal(void)const { return mNormalVector; } inline void Vector3D::setNormal(const Vector &normal) { mNormalVector=normal; } #endif