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

#ifndef ____DIR3D____
#define ____DIR3D____

class Pos3D;

#include "CH3D.h"

class Dir3D : public CH3D {

  public :

    /* Construit le vecteur z                   */

    Dir3D(void);

    /* Construit la direction (x,y,z)           */

    Dir3D(float x,float y,float z);

    /* Construit un clone de la Dir3D d         */

    Dir3D(Dir3D *d);

    /* Construit la direction p1 p2             */

    Dir3D(const Pos3D &p1,const Pos3D &p2);

    /* Destructeur                              */

    ~Dir3D(void);

    /* Methode de calcul de la norme de this    */

    float norme(void);

    /* Calcul de la direction normalisée        */
    /* de this                                  */

    Dir3D normalize(void);

    /* Calcul du produit scalaire               */
    /* de this et de la direction dir           */

    float operator*(const Dir3D& dir);

    /* Calcul du produit vectoriel              */
    /* de this et de la direction dir           */

    Dir3D operator^(const Dir3D& dir);

    /* Calcul de la transformation de this      */
    /* par la transformation geometrique tg     */

    Dir3D mult(const TG3D& tg);   
};

#endif
