/* Mathematiques de l'informatique graphique    */
/* Transformation geometrique de composition    */
/* d'une translation, d'une rotation            */
/* et d'un zoom en coordonnees homogenes        */
/*                                              */
/* Auteur: Nicolas JANEY                        */
/* nicolas.janey@univ-fcomte.fr                 */
/* Mars 2020                                    */

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

#include "TG3D.h"
#include "Tr3D.h"
#include "Rt3D.h"
#include "Sc3D.h"
#include "Dir3D.h"
#include "TRZ3D.h"

/* Construit la TRZ3D identite                  */

TRZ3D::TRZ3D(void):TG3D() {
}

/* Construit la TRZ3D obtenue par composition   */
/* de la translation de direction tr,           */
/* de la rotation de angle degres               */
/* autour de l'axe de direction axe             */
/* passant par l'origine,                       */
/* et du zoom de rapports rx, ry et rz          */

TRZ3D::TRZ3D(Dir3D *tr,float angle,Dir3D *axe,float rx,float ry,float rz) {
  Tr3D translation(tr);
  Rt3D rotation(angle,axe);
  Sc3D scale(rx,ry,rz);
  TG3D tg(&translation,&rotation);
  for ( int i = 0 ; i < 4 ; i++ )
    for ( int j = 0 ; j < 4 ; j++ ) {
      c[i][j] = 0.0;
      for ( int k = 0 ; k < 4 ; k++ )
        c[i][j] += tg.c[i][k]*scale.c[k][j]; } 
}

/* Construit le clone de la TRZ3D trz           */

TRZ3D::TRZ3D(TRZ3D *trz):TG3D(trz) {
}

/* Destructeur                                  */

TRZ3D::~TRZ3D(void) {
}
