/* Auteur: Nicolas JANEY */ /* nicolas.janey@univ-fcomte.fr */ /* Octobre 2005 */ /* Classe de gestion */ /* d'une lumiere directionnelle */ #include "LumiereDirectionnelle.h" #include "Position.h" #include "Direction.h" #include "Materiel.h" #include "Energie.h" LumiereDirectionnelle::LumiereDirectionnelle(void) : Lumiere(false,new Couleur(),0.0F) { this->d = new Direction(); } LumiereDirectionnelle::LumiereDirectionnelle(bool on, Couleur *c, float e, Direction *d) : Lumiere(on,new Couleur(c),e) { this->d = new Direction(d); } LumiereDirectionnelle::LumiereDirectionnelle(LumiereDirectionnelle *l) : Lumiere(l->on,new Couleur(l->c),l->e) { this->d = new Direction(l->d); } LumiereDirectionnelle::~LumiereDirectionnelle(void) { delete(c); delete(d); } Energie *LumiereDirectionnelle::intensiteRecue(Position *p) { Energie *res = new Energie(); res->r = e * c->r; res->v = e * c->v; res->b = e * c->b; return(res); } Energie *LumiereDirectionnelle::energieDiffusee(Position *p, Direction *n, Materiel *m) { Energie *res = new Energie(); float ps = -n->produitScalaire(d); if ( ps > 0.0F ) { Energie *ip = intensiteRecue(p); res->r = ip->r*m->kd->r*ps; res->v = ip->v*m->kd->v*ps; res->b = ip->b*m->kd->b*ps; delete(ip); } return(res); }