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

#ifndef ____OBJET____
#define ____OBJET____

#include "Objet.h"

class Pos3D;
class Materiel;
class RayonLumineux;
class Dir3D;

class Objet {

  public :
    Pos3D *centre;
    Materiel *materiel;

  public :
    Objet(void);
    Objet(Pos3D *p,Materiel *m);
    Objet(Objet *c);
    ~Objet(void);
    void print(void);

    /* Fonction de determination de l'intersection  */
    /* entre un rayon lumineux et une sphere.       */
    /* Un int booleen en retour pour indiquer       */
    /* l'existence ou non d'une intersection.       */
    /* Un double en passage par adresse pour        */
    /* retourner la distance entre l'origine        */
    /* du rayon et l'intersection la plus proche    */
    /* de l'origine du rayon.                       */

    virtual int intersection(RayonLumineux *rl,double *d) = 0;

    /* Fonction de determination de l'existence     */
    /* d'une intersection entre un rayon lumineux   */
    /* et une sphere.                               */
    /* Un int booleen en retour.                    */

    virtual int intersection(RayonLumineux *rl) = 0;

    /* Fonction de calcul de la normale exterieure  */
    /* en un point d'une sphere                     */

    virtual void calculNormale(Dir3D *d,Pos3D *p) = 0;

    virtual void modeliseOpenGL(void) = 0;

    virtual Objet *clone(void) = 0;
};

#endif
