/* Mathematiques de l'informatique graphique    */
/* Position en 3D                               */
/*                                              */
/* Auteur: Nicolas JANEY                        */
/* nicolas.janey@univ-fcomte.fr                 */
/* Octobre 2012                                 */

#include <stdlib.h>
#include <stdio.h>
#include <math.h>

#include "CoordonneesHomogenes3D.h"
#include "Position3D.h"

/* Constructeurs                                */

Position3D::Position3D(void):CoordonneesHomogenes3D(0.0,0.0,0.0,1.0) {
}

Position3D::Position3D(double x,double y,double z):CoordonneesHomogenes3D(x,y,z,1.0) {
}

Position3D::Position3D(Position3D *p):CoordonneesHomogenes3D(p) {
}

/* Destructeur                                  */

Position3D::~Position3D(void) {
}

/* Methode de calcul de la distance             */
/* entre deux positions                         */

double Position3D::distance(Position3D *p) {
  return(sqrt(carreDistance(p)));
}

/* Methode de calcul du carre de la distance    */
/* entre deux positions                         */

double Position3D::carreDistance(Position3D *p) {
  double dx = p->c[0]-c[0];
  double dy = p->c[1]-c[1];
  double dz = p->c[2]-c[2];
  return(dx*dx+dy*dy+dz*dz);
}
