Files
Work/engine/VECTOR3D.HPP
2024-08-07 09:16:27 -04:00

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