/* Rayon lumineux                               */
/*                                              */
/* Auteur: Nicolas JANEY                        */
/* nicolas.janey@univ-fcomte.fr                 */
/* Mars 2014                                    */

#ifndef ____RAYONLUMINEUX____
#define ____RAYONLUMINEUX____

class Pos3D;
class Dir3D;

class RayonLumineux  {

  public :
    Pos3D *origine;
    Dir3D *direction;

  public :
    RayonLumineux(void);
    RayonLumineux(Pos3D *o,Dir3D *d);
    RayonLumineux(RayonLumineux *c);
    ~RayonLumineux(void);
    void print(void);

    /* Fonction de calcul du rayon lumineux         */
    /* reflechi cree par un rayon lumineux incident */

    void rayonReflechi(RayonLumineux *rr,Pos3D *p,Dir3D *n);

    /* Fonction de calcul du rayon lumineux         */
    /* transmis genere eventuellement               */
    /* par un rayon lumineux incident               */
                                
    int rayonTransmis(RayonLumineux *rt,Pos3D *p,Dir3D *n,
                      float niSurnt,int exterieur);
};

#endif
