/* 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);

    /* Methode de normalisation de this         */
    /* Retourne la norme de this                */
    /* avant normalisation                      */

    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);
};

#endif
