/* Mathematiques de l'informatique graphique */ /* Position en 3D */ /* */ /* Auteur: Nicolas JANEY */ /* nicolas.janey@univ-fcomte.fr */ /* Mars 2019 */ #include #include #include #include "CH3D.h" #include "Pos3D.h" /* Constructeurs */ Pos3D::Pos3D(void):CH3D(0.0,0.0,0.0,1.0) { } Pos3D::Pos3D(double x,double y,double z):CH3D(x,y,z,1.0) { } Pos3D::Pos3D(Pos3D *p):CH3D(p) { } /* Destructeur */ Pos3D::~Pos3D(void) { } /* Setters */ bool Pos3D::setw(double w) { return false; } bool Pos3D::set(double val,int i) { if ( ( i >= 0 ) && ( i < 3 ) ) { v.c[i] = val; return true; } return false; } /* Fonction de calcul du carre de la distance */ /* entre les deux positions p1 et p2 */ double Pos3D::carreDistance(Pos3D *p1,Pos3D *p2) { double dx = p2->v.x-p1->v.x; double dy = p2->v.y-p1->v.y; double dz = p2->v.z-p1->v.z; return(dx*dx+dy*dy+dz*dz); } /* Methode de calcul de la distance */ /* entre les deux positions this et p */ double Pos3D::distance(Pos3D *p) { return(sqrt(carreDistance(this,p))); } /* Methode statique de calcul de la distance */ /* entre les deux positions p1 et p2 */ double Pos3D::distance(Pos3D *p1,Pos3D *p2) { return(sqrt(carreDistance(p1,p2))); }