/* Mathematiques de l'informatique graphique */ /* Coordonnees homogenes en 3D */ /* */ /* Auteur: Nicolas JANEY */ /* nicolas.janey@univ-fcomte.fr */ /* Mars 2020 */ #include #include #include #include "CH3D.h" #include "TG3D.h" /* Construit le vecteur nul */ CH3D::CH3D(void) { x = y = z = w = 0.0F; } /* Construit la CH3D (x,y,z,w) */ CH3D::CH3D(float x,float y,float z,float w) { this->x = x; this->y = y; this->z = z; this->w = w; } /* 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); } /* Methode d'affichage texte */ /* precede d'un message */ /* et suivi d'un message */ void CH3D::print(const char *messageAvant,const char *messageApres) { printf("%s",messageAvant); print(); printf("%s",messageApres); } /* Methode de transformation de this */ /* par une transformation geometrique */ void CH3D::transformation(TG3D *tg) { float vx,vy,vz,vw; vx = tg->c[0][0]*x+tg->c[0][1]*y+tg->c[0][2]*z+tg->c[0][3]*w; vy = tg->c[1][0]*x+tg->c[1][1]*y+tg->c[1][2]*z+tg->c[1][3]*w; vz = tg->c[2][0]*x+tg->c[2][1]*y+tg->c[2][2]*z+tg->c[2][3]*w; vw = tg->c[3][0]*x+tg->c[3][1]*y+tg->c[3][2]*z+tg->c[3][3]*w; x = vx; y = vy; z = vz; w = vw; }