97 lines
2.1 KiB
C++
97 lines
2.1 KiB
C++
#ifndef _ENGINE_VECTOR3D_HPP_
|
|
#define _ENGINE_VECTOR3D_HPP_
|
|
#ifndef _COMMON_ASSERT_HPP_
|
|
#include <common/assert.hpp>
|
|
#endif
|
|
#ifndef _ENGINE_POINT3D_HPP_
|
|
#include <engine/point3d.hpp>
|
|
#endif
|
|
#ifndef _ENGINE_VECTOR_HPP_
|
|
#include <engine/vector.hpp>
|
|
#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
|