le programme de test et d'exemple est la :
tp2.cpp
quelle méthode a généré la courbe de gauche
? celle de droite ? que peut-on dire de la convergence pour la
méthode de droite ?
pour tracer la courbe, il est très simple d'utiliser gnuplot,
par exemple. il suffit de copier la sortie du programme dans un fichier
texte et de l'afficher ensuite avec gnuplot :
tp2 > mc.txt
// copie la
sortie du programme dans le fichier mc.txt
gnuplot
// lance
gnuplot
plot "mc.txt" with lines // trace
la courbe en lisant les valeurs dans le fichier texte
quit
// quitte gnuplot
indications : vous aurez
besoin de construire une fonction de répartition permettant de
choisir une source de lumière en fonction de son aire, ou de
l'énergie émise, etc.
une classe Cdf et un programme d'exemple est disponible :
tp2_cdf.cpp
Construisez une fonction de répartition des sources de
lumières (sur quel critère ?) avant de commencer le
calcul de l'image et utilisez-la ensuite pour estimer
l'éclairage direct de chaque point.
Modifiez votre fonction eclairage_direct
:
gk::Color eclairage_direct( const
gk::Point& p, const gk::Normal& n, const MeshMaterial&
matiere, const Cdf& repartition, const
std::vector<Source>& sources );
Serait-il plus interessant de construire une fonction de
répartition pour chaque point avant de calculer son
éclairage direct ? quels sont les avantages et les
inconvénients par rapport à la solution
précédente (une seule fonction de répartition pour
l'ensemble des points) ?