/* 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 Pos3D;
class Dir3D;

class TG3D {

  public :

    /* Composantes                              */

    float mat[4][4];

  public :

    /* Construit la TG3D identite               */

    TG3D(void);

    /* Construit la TG3D clone de tg            */

    TG3D(TG3D *tg);

    /* Destructeur                              */

    virtual ~TG3D(void);

    /* Calcul de la composition                 */
    /* de la transformation geometrique this    */
    /* par la transformation geometrique rhs    */

    TG3D mult(const TG3D& rhs);

    /* Calcul de la transformation              */
    /* de la Pos3D p                            */
    /* par la transformation geometrique this   */

    Pos3D mult(Pos3D &p);

    /* Calcul de la transformation              */
    /* de la Dir3D d                            */
    /* par la transformation geometrique this   */

    Dir3D mult(Dir3D& d);

    /* Methode d'affichage texte                */

    void print(void);
};

#endif
