/* Mathematiques de l'informatique graphique    */
/* Coordonnees homogenes en 3D                  */
/*                                              */
/* Mars 2021                                    */

#include <stdio.h>

#include "CH3D.h"

#include "Pos3D.h"
#include "Dir3D.h"

/* Construit la position origine                */

CH3D::CH3D(void) : x(0.0F),y(0.0F),z(0.0F),w(1.0F) {
}

/* Construit la CH3D (xp,yp,zp,wp)              */

CH3D::CH3D(float xp, float yp, float zp, float wp) : x(xp),y(yp),z(zp),w(wp) {
}

/* Construit un clone de la CH3D ch             */

CH3D::CH3D(CH3D *ch) : x(ch->x),y(ch->y),z(ch->z),w(ch->w) {
}

/* Destructeur                                  */

CH3D::~CH3D(void) {
}

/* Methode d'affichage texte                    */

void CH3D::print(void) {
  printf("%10.4f %10.4f %10.4f %10.4f",x,y,z,w);
}

/* Cast CH3D vers Pos3D                          */

CH3D::operator Pos3D() {
  Pos3D output(x,y,z);
  return output;
}

/* Cast CH3D vers Dir3D                          */

CH3D::operator Dir3D() {
  Dir3D output(x,y,z);
  return output;
}