#include ".\point3d.h"



Point3D::Point3D(void)
{
	Coords = new GLfloat[3];
	Origine();
}

Point3D::Point3D(float m_x, float m_y, float m_z){
	Coords = new GLfloat[3];
	assigne (m_x, m_y, m_z);
}


Point3D::Point3D(float* Vecteur){
	Coords = new GLfloat[3];
	assigne(Vecteur[0], Vecteur[1], Vecteur[2]);
}


Point3D::Point3D(const Point3D& P){
	Coords = new GLfloat[3];
	assigne(P.Coords[0], P.Coords[1], P.Coords[2]);
}

const Point3D& Point3D::operator=(const Point3D& P){
	assigne(P.Coords[0], P.Coords[1], P.Coords[2]);
	return *this;
}

void  Point3D::Draw(GLfloat* C){

	glBegin(GL_POINTS);                             
		glVertex3fv(Coords);         
	glEnd();            
}
Point3D::~Point3D(void)
{
	delete [] Coords;
}

Point3D& Point3D::operator+(const Point3D& PParam){

       Point3D* P = new Point3D(*this);

       P->Coords[0] += PParam.Coords[0];
       P->Coords[1] += PParam.Coords[1];
       P->Coords[2] += PParam.Coords[2];

       return *P;
}

Point3D& Point3D::operator-(const Point3D& PParam){

       Point3D* P = new Point3D(*this);

       P->Coords[0] -= PParam.Coords[0];
       P->Coords[1] -= PParam.Coords[1];
       P->Coords[2] -= PParam.Coords[2];

       return *P;
}

Point3D& Point3D::operator*(float PParam){

       Point3D* P = new Point3D(*this);

       P->Coords[0] *= PParam;
       P->Coords[1] *= PParam;
       P->Coords[2] *= PParam;

       return *P;
}

Point3D& Point3D::operator/(float PParam){

       Point3D* P = new Point3D(*this);

       P->Coords[0] /= PParam;
       P->Coords[1] /= PParam;
       P->Coords[2] /= PParam;

       return *P;
}
