diff --git a/0.png b/0.png
index 0ac888ac5fd8aea0c0b896f0c09a7cda4f02d8c3..65c01647e5bd70fb52e9fb06fccd039113c0b989 100644
Binary files a/0.png and b/0.png differ
diff --git a/2.png b/2.png
new file mode 100644
index 0000000000000000000000000000000000000000..4ed86d8537c100c777481be7d82f8d453965eb80
Binary files /dev/null and b/2.png differ
diff --git a/main b/main
index d1569d395ae0026a97300d382cda0dcc592ae451..c248d48d4ff0cc9440be85d18a0ca9445982a5b2 100644
Binary files a/main and b/main differ
diff --git a/main.cpp b/main.cpp
index b9187c2d02318fb52f507fac874e80c82178cfbe..d52af0562d816677d9854e8cabc11d5bf40ce642 100644
--- a/main.cpp
+++ b/main.cpp
@@ -191,8 +191,8 @@ int main()
 
 		//----------CALCUL ET SAUVEGARDE DE L'IMAGE----------
 		std::cout << "Création de l'image..." << std::endl;
-		std::string filename = "0.png";
-		scene.render(width, height, 480, 480, nb_shapes, (char *) filename.c_str());
+		std::string filename = "2.png";
+		scene.render(width, height, 1080, 1080, nb_shapes, (char *) filename.c_str());
 		std::cout << "Image sauvegardée" << std::endl;
 
 		//----------LIBERATION DE LA MEMOIRE----------
diff --git a/scene.cpp b/scene.cpp
index cbe90ccc789a678105a03fd0928e50c78cc58102..5749efb87cbb450b309e34d1e98a6a1cb1d5d2dc 100644
--- a/scene.cpp
+++ b/scene.cpp
@@ -136,7 +136,9 @@ void Scene::render(int width, int height, int nb_pixel_row, int nb_pixel_col, in
 									}
 						}
 
-						float intensity = 60/dist(reflected.origin(), source_.origin()); //pour atténuer la lumière selon la distance
+						//intensité pour harmoniser les ombres selon la distance
+						float intensity = dist(reflected.origin(), source_.origin());
+						intensity = 5000/(intensity*intensity);
 
 						if (shadow)
 						{
@@ -149,15 +151,16 @@ void Scene::render(int width, int height, int nb_pixel_row, int nb_pixel_col, in
 						{
 							Ray3f source_to_reflect(source_.origin(), reflected.origin()-source_.origin());
 
-
-							if (  dist(reflect_to_source.origin() , shapes_[k]->reflect(source_to_reflect).origin()) > 0.5  ) //self_shadow
+							//self_shadow
+							//au lieu de diviser par une constante (2.) diviser par l'angle ?
+							if (  dist(reflect_to_source.origin() , shapes_[k]->reflect(source_to_reflect).origin()) > 0.05  )
 							{
-								row[3*(nb_pixel_row-1-j)] = fmin(shapes_[k]->matter().r()/2 * intensity, shapes_[k]->matter().r()/2);
-								row[3*(nb_pixel_row-1-j) + 1] = fmin(shapes_[k]->matter().g()/2 * intensity, shapes_[k]->matter().g()/2);
-								row[3*(nb_pixel_row-1-j) + 2] = fmin(shapes_[k]->matter().b()/2 * intensity, shapes_[k]->matter().b()/2);
+								row[3*(nb_pixel_row-1-j)] = fmin(shapes_[k]->matter().r()/2. * intensity, shapes_[k]->matter().r()/2.);
+								row[3*(nb_pixel_row-1-j) + 1] = fmin(shapes_[k]->matter().g()/2. * intensity, shapes_[k]->matter().g()/2.);
+								row[3*(nb_pixel_row-1-j) + 2] = fmin(shapes_[k]->matter().b()/2. * intensity, shapes_[k]->matter().b()/2.);
 							}
 
-							else //il faut rajouter la réflexion
+							else //il faut rajouter la réflexion et l'angle
 							{
 								row[3*(nb_pixel_row-1-j)] = fmin(shapes_[k]->matter().r() * intensity, 255.);
 								row[3*(nb_pixel_row-1-j) + 1] = fmin(shapes_[k]->matter().g() * intensity, 255.);