/* Calculs d'illumination : */ /* - diffusion sous lumiere ponctuelle */ /* - reflexion speculaire sous lumiere ponctuelle */ /* */ /* Auteur: Nicolas JANEY */ /* nicolas.janey@univ-fcomte.fr */ /* Octobre 2010 */ #include #include #include #include "CoordonneesHomogenes.h" #include "Position3D.h" #include "Direction3D.h" #include "FacetteTriangulaire.h" #include "LumierePonctuelle.h" #include "Energie.h" #include "Couleur.h" /* Variables et constantes globales */ /* pour les angles et les couleurs utilises */ #ifndef M_PI #define M_PI 3.14159 #endif /* Fonction principale */ int main(int argc,char **argv) { Position3D *p1 = new Position3D(3.0,0.0,0.0); Position3D *p2 = new Position3D(1.0,3.0,1.0); Position3D *p3 = new Position3D(-1.0,-1.0,-1.0); FacetteTriangulaire *fct = new FacetteTriangulaire(p1,p2,p3); p1->print(); printf("\n"); p2->print(); printf("\n"); p3->print(); printf("\n"); printf("\n"); fct->print(); printf("\n"); printf("\n"); Position3D *cntr = new Position3D((p1->c[0]+p2->c[0]+p3->c[0])/3.0, (p1->c[1]+p2->c[1]+p3->c[1])/3.0, (p1->c[2]+p2->c[2]+p3->c[2])/3.0); Couleur *kd = new Couleur(0.8,0.2,0.2); Couleur *kr = new Couleur(0.2,0.8,0.8); Position3D *pos = new Position3D(0.2,0.3,3.5); Couleur *jaunatre = new Couleur(1.0,1.0,0.7); LumierePonctuelle *lp = new LumierePonctuelle(pos,10.0,jaunatre); Position3D *obs = new Position3D(0.0,0.0,20.0); Energie *e = new Energie(); e->calculDiffusion(cntr,fct,kd,lp); e->print(); printf("\n"); e->calculReflexionSpeculaire(cntr,fct,kr,lp,obs); e->print(); printf("\n"); delete(obs); delete(pos); delete(jaunatre); delete(lp); delete(kd); delete(kr); delete(e); delete(cntr); delete(fct); delete(p3); delete(p2); delete(p1); return(0); }