/* Mathematiques de l'informatique graphique    */
/* Transformation geometrique 3D                */
/* en coordonnees homogenes                     */
/*                                              */
/* Auteur: Nicolas JANEY                        */
/* nicolas.janey@univ-fcomte.fr                 */
/* Mars 2020                                    */

#ifndef ____TG3D____
#define ____TG3D____

class CH3D;

class TG3D {

  public :

    /* Composantes                              */

    float c[4][4];

  public :

    /* Construit la TG3D identite               */

    TG3D(void);

    /* Construit la TG3D clone de tg            */

    TG3D(TG3D *tg);

    /* Construit la TG3D composition            */
    /* de tg1 par tg2                           */

    TG3D(TG3D *tg1,TG3D *tg2);

    /* Destructeur                              */

    virtual ~TG3D(void);

    /* Methode d'affichage texte                */

    void print(void);

    /* Methode d'affichage texte                */
    /* precede d'un message                     */
    /* et suivi d'un message                    */

    void print(const char *messageAvant,const char *messageApres);

  private :

    /* Methode de composition                   */
    /* de la transformation geometrique tg1     */
    /* par la transformation geometrique tg2    */
    /* avec stockage du resultat dans this      */
    /* this = tg1 * tg2                         */

    void composition(TG3D *tg1,TG3D *tg2);
};

#endif
