diff --git a/2.png b/2.png
index 3a7fb18000664fba3baef0a35e31cfb2a334eef0..24b900339dda480fc8be86d08cbd153dc1bd03d3 100644
Binary files a/2.png and b/2.png differ
diff --git a/camera.h b/camera.h
index 020842d1fc9fd5cc5a4abc8bee496900d34a832f..e24229f4378666fdc009f9eaad862c089c1e8c97 100644
--- a/camera.h
+++ b/camera.h
@@ -37,7 +37,7 @@ class Camera
 		 * \brief Constructeur de Copie
 		 *
 		 * Constructeur de Copie de la classe Camera
-		 * \param <r> référence d'une camera
+		 * \param <r> référence d'une Camera
 		 */
 		Camera(const Camera & r);
 
@@ -57,7 +57,7 @@ class Camera
 };
 
    /*!
-	* \brief Opérateur d'affichage des paramètres de la camera
+	* \brief Opérateur d'affichage des paramètres de la Camera
 	*/
 
 std::ostream & operator<<(std::ostream & st, const Camera & c);
diff --git a/main b/main
index df7399bd0799f2a7ad65fde3e4325f0303412170..d1134e4b09b2ef52ca9629d51f89e5e1a9ebb6be 100755
Binary files a/main and b/main differ
diff --git a/material.h b/material.h
index 26bfd8ec359daa34fa6720aebf047c04ea4cdf9e..f7ec065816ab580ea8375865518517c54b3a49e2 100644
--- a/material.h
+++ b/material.h
@@ -41,7 +41,7 @@ class Material
 	 *
 	 * Constructeur de copie de la classe Material
 	 *
-	 * \param <Material & m> reference à un autre matériau
+	 * \param <Material & m> référence à un autre matériau
 	 */
 		Material(const Material & m);
 	
diff --git a/quad.h b/quad.h
index 5b3634f0cd640011795d2d8ff0820ecbc14a590a..8332aef5719760d48b46f40beeb37e0f4df6de7f 100644
--- a/quad.h
+++ b/quad.h
@@ -13,7 +13,7 @@
  * \class Quad
  * \brief Représentation des Parallélépipèdes rectangles
  *
- * Classe derivant de Shape : Représentation des Parallélépipèdes rectangles par le centre du Parallélépipède, sa hauteur, sa largeur et sa longueur.
+ * Classe dérivant de Shape : Représentation des Parallélépipèdes rectangles par le centre du Parallélépipède, sa hauteur, sa largeur et sa longueur.
  */
 class Quad : public Shape
 {
@@ -30,7 +30,7 @@ class Quad : public Shape
 	 *
 	 * Constructeur de la classe Quad
 	 * Attention, si les paramètres de taille ne sont pas positifs le constructeur ne crée pas l'instance
-	 * \param <matter> le materiau dont est fait le Quad
+	 * \param <matter> le matériau dont est fait le Quad
 	 * \param <origin> le centre du Quad
 	 * \param <width> la largeur du Quad
 	 * \param <height> la hauteur du Quad
diff --git a/scene.cpp b/scene.cpp
index 5ea9a9e5f32d09b2d5a6715753a2bd96641f0c7d..c124ef86703f6bd6d87c7dde8f50e1350579ba5d 100644
--- a/scene.cpp
+++ b/scene.cpp
@@ -84,11 +84,14 @@ void Scene::render(int width, int height, int nb_pixel_row, int nb_pixel_col, in
 	float min_dist;
 	float hit_dist;
 
-	int ref_max = 6;
+	int ref_max = 4;
 	Ray3f *ray[ref_max];
 	float shine[ref_max-1];
 	float coef[ref_max-1];
 
+	bool shadow;
+	float intensity;
+
 
 	for (int i=nb_pixel_col-1; i>=0; i--) //on remplit l'image par le bas à droite
 	{
@@ -114,7 +117,7 @@ void Scene::render(int width, int height, int nb_pixel_row, int nb_pixel_col, in
 				if (k != -1)
 				{
 					Ray3f reflected(shapes_[k]->reflect(*ray[r]));
-					bool shadow = false;
+					shadow = false;
 					Ray3f reflect_to_source(reflected.origin(), source_.origin()-reflected.origin());
 
 
@@ -131,7 +134,7 @@ void Scene::render(int width, int height, int nb_pixel_row, int nb_pixel_col, in
 					}
 
 					//intensité pour harmoniser les ombres selon la distance
-					float intensity = dist(reflected.origin(), source_.origin());
+					intensity = dist(reflected.origin(), source_.origin());
 					intensity = 5000/(intensity*intensity);
 
 					if (shadow)
diff --git a/scene.h b/scene.h
index d12bb8c6d59dcecaff85e5b97d20606af3a83450..3ce723a21fa51a4dc6b71c05df60cade19e57fd4 100644
--- a/scene.h
+++ b/scene.h
@@ -14,7 +14,7 @@
  * \class Scene
  * \brief Classe permettant le rendu de la scène
  *
- * Contient toutes les informations pour pouvoir faire le rendu: la camera, la lumière, et la liste des pointeurs sur les formes
+ * Contient toutes les informations pour pouvoir faire le rendu: la caméra, la lumière, et la liste des pointeurs sur les formes
  */
 class Scene
 {
@@ -26,7 +26,6 @@ class Scene
 	public:
 		Scene(Camera camera, Shape* *shapes, Ray3f source);
 		Scene(const Scene & s);
-		//~Scene();
 
 		Camera camera() const;
 		Shape* *shapes() const;
@@ -39,7 +38,5 @@ class Scene
 };
 
 
-//std::ostream & operator<<(std::ostream & st, const Scene & s);
-
 
 #endif
diff --git a/shape.h b/shape.h
index 4f6acb769b480ba132dc685170b4552cf3f0f090..dcf697a65cf58bb9c6f858c21b6fe485ea455c2e 100644
--- a/shape.h
+++ b/shape.h
@@ -3,7 +3,7 @@
 
 /*!
  * \file shapes.h
- * \brief Implémentation abstraite des formes 3d
+ * \brief Implémentation abstraite des formes en 3D
  */
 
 #include "ray3f.h"
@@ -11,7 +11,7 @@
 
 /*!
  * \class Shape
- * \brief Classe abstraite des formes 3d
+ * \brief Classe abstraite des formes en 3D
  *
  * Classe abstraite pure dont héritent les autres formes géométriques
  */
@@ -33,16 +33,16 @@ class Shape
 	/*!
 	 * \brief Test d'intersection 
 	 *
-	 * Methode permetant de savoir si le rayon touche l'objet ou non
+	 * Methode permettant de savoir si le rayon touche l'objet ou non
 	 * \param ray Le rayon de lumière que l'on doit vérifier s'il touche l'objet ou non
 	 * \return bool 
 	 */
 		virtual bool is_hit(const Ray3f ray) = 0;
 
 	/*!
-	 * \brief  Récuperation du rayon réfléchi 
+	 * \brief  Récupération du rayon réfléchi 
 	 *
-	 * Methode permetant de savoir le point d'origine du rayon réfléchi et ça direction
+	 * Méthode permettant de savoir le point d'origine du rayon réfléchi et sa direction
 	 * \param ray Le rayon de lumière qui doit traverser l'objet
 	 * \return Ray3f 
 	 */
diff --git a/sphere.h b/sphere.h
index a2e7c2c62cbeb6dd9142c8e4b5a63b88b39dd263..f3def2e1d63179f63570c03efb64282b928642a6 100644
--- a/sphere.h
+++ b/sphere.h
@@ -3,16 +3,16 @@
 
 /*!
  * \file sphere.h
- * \brief Implementation des spheres
+ * \brief Implémentation des sphères
  */
 
 #include "shape.h"
 
 /*!
  * \class Sphere
- * \brief Classe representant une sphere
+ * \brief Classe représentant une sphère
  *
- * Sphere representee dans l'espace par son centre et son rayon
+ * Sphere représentée dans l'espace par son centre et son rayon
  */
 
 class Sphere : public Shape
@@ -26,9 +26,9 @@ class Sphere : public Shape
 	 * \brief Constructeur
 	 *
 	 * Constructeur de la classe Sphere
-	 * \param <matter> le materiau dont la sphere est composee
-	 * \param <origin> le centre de la sphere
-	 * \param <radius> le rayon de la sphere
+	 * \param <matter> le matériau dont la sphère est composée
+	 * \param <origin> le centre de la sphère
+	 * \param <radius> le rayon de la sphère
 	 */
 		Sphere(Material matter, Vector3f origin, float radius);
 
diff --git a/valgrind-out.txt b/valgrind-out.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9a3b13cb5bb51fdaf777f25c6cb0e0bdb6d7e138
--- /dev/null
+++ b/valgrind-out.txt
@@ -0,0 +1,305 @@
+==13027== Memcheck, a memory error detector
+==13027== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
+==13027== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
+==13027== Command: ./main
+==13027== Parent PID: 12751
+==13027== 
+--13027-- 
+--13027-- Valgrind options:
+--13027--    --leak-check=full
+--13027--    --show-leak-kinds=all
+--13027--    --track-origins=yes
+--13027--    --verbose
+--13027--    --log-file=valgrind-out.txt
+--13027-- Contents of /proc/version:
+--13027--   Linux version 4.15.0-48-generic (buildd@lgw01-amd64-036) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #51-Ubuntu SMP Wed Apr 3 08:28:49 UTC 2019
+--13027-- 
+--13027-- Arch and hwcaps: AMD64, LittleEndian, amd64-cx16-lzcnt-rdtscp-sse3-avx-avx2-bmi
+--13027-- Page sizes: currently 4096, max supported 4096
+--13027-- Valgrind library directory: /usr/lib/valgrind
+--13027-- Reading syms from /home/acheroufkebir/PAP/pap_ray_tracing_final/main
+--13027-- Reading syms from /lib/x86_64-linux-gnu/ld-2.27.so
+--13027--   Considering /lib/x86_64-linux-gnu/ld-2.27.so ..
+--13027--   .. CRC mismatch (computed 1b7c895e wanted 2943108a)
+--13027--   Considering /usr/lib/debug/lib/x86_64-linux-gnu/ld-2.27.so ..
+--13027--   .. CRC is valid
+--13027-- Reading syms from /usr/lib/valgrind/memcheck-amd64-linux
+--13027--   Considering /usr/lib/valgrind/memcheck-amd64-linux ..
+--13027--   .. CRC mismatch (computed 41ddb025 wanted 9972f546)
+--13027--    object doesn't have a symbol table
+--13027--    object doesn't have a dynamic symbol table
+--13027-- Scheduler: using generic scheduler lock implementation.
+--13027-- Reading suppressions file: /usr/lib/valgrind/default.supp
+==13027== embedded gdbserver: reading from /tmp/vgdb-pipe-from-vgdb-to-13027-by-acheroufkebir-on-???
+==13027== embedded gdbserver: writing to   /tmp/vgdb-pipe-to-vgdb-from-13027-by-acheroufkebir-on-???
+==13027== embedded gdbserver: shared mem   /tmp/vgdb-pipe-shared-mem-vgdb-13027-by-acheroufkebir-on-???
+==13027== 
+==13027== TO CONTROL THIS PROCESS USING vgdb (which you probably
+==13027== don't want to do, unless you know exactly what you're doing,
+==13027== or are doing some strange experiment):
+==13027==   /usr/lib/valgrind/../../bin/vgdb --pid=13027 ...command...
+==13027== 
+==13027== TO DEBUG THIS PROCESS USING GDB: start GDB like this
+==13027==   /path/to/gdb ./main
+==13027== and then give GDB the following command
+==13027==   target remote | /usr/lib/valgrind/../../bin/vgdb --pid=13027
+==13027== --pid is optional if only one valgrind process is running
+==13027== 
+--13027-- REDIR: 0x401f2f0 (ld-linux-x86-64.so.2:strlen) redirected to 0x580608c1 (???)
+--13027-- REDIR: 0x401f0d0 (ld-linux-x86-64.so.2:index) redirected to 0x580608db (???)
+--13027-- Reading syms from /usr/lib/valgrind/vgpreload_core-amd64-linux.so
+--13027--   Considering /usr/lib/valgrind/vgpreload_core-amd64-linux.so ..
+--13027--   .. CRC mismatch (computed 50df1b30 wanted 4800a4cf)
+--13027--    object doesn't have a symbol table
+--13027-- Reading syms from /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so
+--13027--   Considering /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so ..
+--13027--   .. CRC mismatch (computed f893b962 wanted 95ee359e)
+--13027--    object doesn't have a symbol table
+==13027== WARNING: new redirection conflicts with existing -- ignoring it
+--13027--     old: 0x0401f2f0 (strlen              ) R-> (0000.0) 0x580608c1 ???
+--13027--     new: 0x0401f2f0 (strlen              ) R-> (2007.0) 0x04c32db0 strlen
+--13027-- REDIR: 0x401d360 (ld-linux-x86-64.so.2:strcmp) redirected to 0x4c33ee0 (strcmp)
+--13027-- REDIR: 0x401f830 (ld-linux-x86-64.so.2:mempcpy) redirected to 0x4c374f0 (mempcpy)
+--13027-- Reading syms from /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0
+--13027--    object doesn't have a symbol table
+--13027-- Reading syms from /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25
+--13027--    object doesn't have a symbol table
+--13027-- Reading syms from /lib/x86_64-linux-gnu/libm-2.27.so
+--13027--   Considering /lib/x86_64-linux-gnu/libm-2.27.so ..
+--13027--   .. CRC mismatch (computed 7feae033 wanted b29b2508)
+--13027--   Considering /usr/lib/debug/lib/x86_64-linux-gnu/libm-2.27.so ..
+--13027--   .. CRC is valid
+--13027-- Reading syms from /lib/x86_64-linux-gnu/libgcc_s.so.1
+--13027--    object doesn't have a symbol table
+--13027-- Reading syms from /lib/x86_64-linux-gnu/libc-2.27.so
+--13027--   Considering /lib/x86_64-linux-gnu/libc-2.27.so ..
+--13027--   .. CRC mismatch (computed b1c74187 wanted 042cc048)
+--13027--   Considering /usr/lib/debug/lib/x86_64-linux-gnu/libc-2.27.so ..
+--13027--   .. CRC is valid
+--13027-- Reading syms from /lib/x86_64-linux-gnu/libz.so.1.2.11
+--13027--    object doesn't have a symbol table
+--13027-- REDIR: 0x5a4bc70 (libc.so.6:memmove) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a4ad40 (libc.so.6:strncpy) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a4bf50 (libc.so.6:strcasecmp) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a4a790 (libc.so.6:strcat) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a4ad70 (libc.so.6:rindex) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a4d7c0 (libc.so.6:rawmemchr) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a4bde0 (libc.so.6:mempcpy) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a4bc10 (libc.so.6:bcmp) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a4ad00 (libc.so.6:strncmp) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a4a800 (libc.so.6:strcmp) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a4bd40 (libc.so.6:memset) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a690f0 (libc.so.6:wcschr) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a4aca0 (libc.so.6:strnlen) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a4a870 (libc.so.6:strcspn) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a4bfa0 (libc.so.6:strncasecmp) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a4a840 (libc.so.6:strcpy) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a4c0e0 (libc.so.6:memcpy@@GLIBC_2.14) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a4ada0 (libc.so.6:strpbrk) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a4a7c0 (libc.so.6:index) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a4ac70 (libc.so.6:strlen) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a556c0 (libc.so.6:memrchr) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a4bff0 (libc.so.6:strcasecmp_l) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a4bbe0 (libc.so.6:memchr) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a69eb0 (libc.so.6:wcslen) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a4b050 (libc.so.6:strspn) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a4bf20 (libc.so.6:stpncpy) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a4bef0 (libc.so.6:stpcpy) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a4d7f0 (libc.so.6:strchrnul) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5a4c040 (libc.so.6:strncasecmp_l) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5ade8a0 (libc.so.6:__memcpy_chk) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
+--13027-- REDIR: 0x5b3b3c0 (libc.so.6:__strrchr_avx2) redirected to 0x4c32730 (rindex)
+--13027-- REDIR: 0x5a44070 (libc.so.6:malloc) redirected to 0x4c2faa0 (malloc)
+--13027-- REDIR: 0x5b3b590 (libc.so.6:__strlen_avx2) redirected to 0x4c32cf0 (strlen)
+--13027-- REDIR: 0x5b37ba0 (libc.so.6:__memcmp_avx2_movbe) redirected to 0x4c35e00 (bcmp)
+--13027-- REDIR: 0x5b16d60 (libc.so.6:__strcmp_ssse3) redirected to 0x4c33da0 (strcmp)
+--13027-- REDIR: 0x5101190 (libstdc++.so.6:operator new(unsigned long)) redirected to 0x4c30110 (operator new(unsigned long))
+--13027-- REDIR: 0x5b3bad0 (libc.so.6:__memcpy_avx_unaligned_erms) redirected to 0x4c366e0 (memmove)
+--13027-- REDIR: 0x5a4b590 (libc.so.6:__GI_strstr) redirected to 0x4c37760 (__strstr_sse2)
+--13027-- REDIR: 0x5b3bab0 (libc.so.6:__mempcpy_avx_unaligned_erms) redirected to 0x4c37130 (mempcpy)
+--13027-- REDIR: 0x5b3bf50 (libc.so.6:__memset_avx2_unaligned_erms) redirected to 0x4c365d0 (memset)
+--13027-- REDIR: 0x50ff310 (libstdc++.so.6:operator delete[](void*)) redirected to 0x4c316d0 (operator delete[](void*))
+==13027== Mismatched free() / delete / delete []
+==13027==    at 0x4C3173B: operator delete[](void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==13027==    by 0x10E215: Scene::render(int, int, int, int, int, char*, int, bool) (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027==    by 0x10F25F: main (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027==  Address 0x5fcf910 is 0 bytes inside a block of size 24 alloc'd
+==13027==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==13027==    by 0x10D0B5: Scene::render(int, int, int, int, int, char*, int, bool) (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027==    by 0x10F25F: main (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027== 
+--13027-- REDIR: 0x5a44950 (libc.so.6:free) redirected to 0x4c30cd0 (free)
+==13027== Mismatched free() / delete / delete []
+==13027==    at 0x4C3173B: operator delete[](void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==13027==    by 0x10F2D8: main (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027==  Address 0x5fccc80 is 0 bytes inside a block of size 48 alloc'd
+==13027==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==13027==    by 0x10EB44: main (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027== 
+--13027-- REDIR: 0x50ff2e0 (libstdc++.so.6:operator delete(void*)) redirected to 0x4c311d0 (operator delete(void*))
+==13027== 
+==13027== HEAP SUMMARY:
+==13027==     in use at exit: 157,666 bytes in 287 blocks
+==13027==   total heap usage: 332 allocs, 45 frees, 237,202 bytes allocated
+==13027== 
+==13027== Searching for pointers to 287 not-freed blocks
+==13027== Checked 119,384 bytes
+==13027== 
+==13027== 30 bytes in 1 blocks are definitely lost in loss record 1 of 15
+==13027==    at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==13027==    by 0x4E46DDD: png_malloc (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x10CDE5: Scene::render(int, int, int, int, int, char*, int, bool) (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027==    by 0x10F25F: main (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027== 
+==13027== 31 bytes in 1 blocks are indirectly lost in loss record 2 of 15
+==13027==    at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==13027==    by 0x4E46DDD: png_malloc (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E613B3: ??? (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E5C84B: png_write_row (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x10E1CB: Scene::render(int, int, int, int, int, char*, int, bool) (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027==    by 0x10F25F: main (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027== 
+==13027== 31 bytes in 1 blocks are indirectly lost in loss record 3 of 15
+==13027==    at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==13027==    by 0x4E46DDD: png_malloc (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E614A2: ??? (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E5C84B: png_write_row (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x10E1CB: Scene::render(int, int, int, int, int, char*, int, bool) (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027==    by 0x10F25F: main (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027== 
+==13027== 31 bytes in 1 blocks are indirectly lost in loss record 4 of 15
+==13027==    at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==13027==    by 0x4E46DDD: png_malloc (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E614E3: ??? (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E5C84B: png_write_row (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x10E1CB: Scene::render(int, int, int, int, int, char*, int, bool) (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027==    by 0x10F25F: main (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027== 
+==13027== 31 bytes in 1 blocks are indirectly lost in loss record 5 of 15
+==13027==    at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==13027==    by 0x4E46DDD: png_malloc (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E46E08: png_calloc (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E61419: ??? (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E5C84B: png_write_row (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x10E1CB: Scene::render(int, int, int, int, int, char*, int, bool) (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027==    by 0x10F25F: main (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027== 
+==13027== 360 bytes in 1 blocks are definitely lost in loss record 6 of 15
+==13027==    at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==13027==    by 0x4E40F32: png_create_info_struct (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x10CCC6: Scene::render(int, int, int, int, int, char*, int, bool) (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027==    by 0x10F25F: main (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027== 
+==13027== 2,048 bytes in 1 blocks are indirectly lost in loss record 7 of 15
+==13027==    at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==13027==    by 0x4E46E81: png_malloc_warn (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x5DA5E9E: deflateInit2_ (in /lib/x86_64-linux-gnu/libz.so.1.2.11)
+==13027==    by 0x4E5EDF0: ??? (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E5FA92: ??? (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E61B45: ??? (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E5C981: png_write_row (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x10E1CB: Scene::render(int, int, int, int, int, char*, int, bool) (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027==    by 0x10F25F: main (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027== 
+==13027== 2,048 bytes in 1 blocks are indirectly lost in loss record 8 of 15
+==13027==    at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==13027==    by 0x4E46E81: png_malloc_warn (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x5DA5EB1: deflateInit2_ (in /lib/x86_64-linux-gnu/libz.so.1.2.11)
+==13027==    by 0x4E5EDF0: ??? (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E5FA92: ??? (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E61B45: ??? (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E5C981: png_write_row (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x10E1CB: Scene::render(int, int, int, int, int, char*, int, bool) (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027==    by 0x10F25F: main (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027== 
+==13027== 2,160 bytes in 90 blocks are definitely lost in loss record 9 of 15
+==13027==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==13027==    by 0x10D0B5: Scene::render(int, int, int, int, int, char*, int, bool) (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027==    by 0x10F25F: main (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027== 
+==13027== 4,416 bytes in 184 blocks are definitely lost in loss record 10 of 15
+==13027==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==13027==    by 0x10E5DF: Scene::reflected_rays(Ray3f**, int, int, float*) (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027==    by 0x10D0FD: Scene::render(int, int, int, int, int, char*, int, bool) (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027==    by 0x10F25F: main (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027== 
+==13027== 5,952 bytes in 1 blocks are indirectly lost in loss record 11 of 15
+==13027==    at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==13027==    by 0x4E46E81: png_malloc_warn (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x5DA5E14: deflateInit2_ (in /lib/x86_64-linux-gnu/libz.so.1.2.11)
+==13027==    by 0x4E5EDF0: ??? (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E5FA92: ??? (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E61B45: ??? (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E5C981: png_write_row (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x10E1CB: Scene::render(int, int, int, int, int, char*, int, bool) (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027==    by 0x10F25F: main (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027== 
+==13027== 8,200 bytes in 1 blocks are indirectly lost in loss record 12 of 15
+==13027==    at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==13027==    by 0x4E46DDD: png_malloc (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E5FCFE: ??? (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E61B45: ??? (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E5C981: png_write_row (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x10E1CB: Scene::render(int, int, int, int, int, char*, int, bool) (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027==    by 0x10F25F: main (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027== 
+==13027== 65,536 bytes in 1 blocks are indirectly lost in loss record 13 of 15
+==13027==    at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==13027==    by 0x4E46E81: png_malloc_warn (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x5DA5EC7: deflateInit2_ (in /lib/x86_64-linux-gnu/libz.so.1.2.11)
+==13027==    by 0x4E5EDF0: ??? (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E5FA92: ??? (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E61B45: ??? (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E5C981: png_write_row (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x10E1CB: Scene::render(int, int, int, int, int, char*, int, bool) (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027==    by 0x10F25F: main (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027== 
+==13027== 65,536 bytes in 1 blocks are indirectly lost in loss record 14 of 15
+==13027==    at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==13027==    by 0x4E46E81: png_malloc_warn (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x5DA5EF6: deflateInit2_ (in /lib/x86_64-linux-gnu/libz.so.1.2.11)
+==13027==    by 0x4E5EDF0: ??? (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E5FA92: ??? (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E61B45: ??? (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E5C981: png_write_row (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x10E1CB: Scene::render(int, int, int, int, int, char*, int, bool) (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027==    by 0x10F25F: main (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027== 
+==13027== 150,700 (1,256 direct, 149,444 indirect) bytes in 1 blocks are definitely lost in loss record 15 of 15
+==13027==    at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==13027==    by 0x4E46E81: png_malloc_warn (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E40E8F: ??? (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E5C74C: png_create_write_struct_2 (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x4E5C7F0: png_create_write_struct (in /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0)
+==13027==    by 0x10CC6D: Scene::render(int, int, int, int, int, char*, int, bool) (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027==    by 0x10F25F: main (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027== 
+==13027== LEAK SUMMARY:
+==13027==    definitely lost: 8,222 bytes in 277 blocks
+==13027==    indirectly lost: 149,444 bytes in 10 blocks
+==13027==      possibly lost: 0 bytes in 0 blocks
+==13027==    still reachable: 0 bytes in 0 blocks
+==13027==         suppressed: 0 bytes in 0 blocks
+==13027== 
+==13027== ERROR SUMMARY: 43 errors from 7 contexts (suppressed: 0 from 0)
+==13027== 
+==13027== 8 errors in context 1 of 7:
+==13027== Mismatched free() / delete / delete []
+==13027==    at 0x4C3173B: operator delete[](void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==13027==    by 0x10F2D8: main (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027==  Address 0x5fccc80 is 0 bytes inside a block of size 48 alloc'd
+==13027==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==13027==    by 0x10EB44: main (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027== 
+==13027== 
+==13027== 30 errors in context 2 of 7:
+==13027== Mismatched free() / delete / delete []
+==13027==    at 0x4C3173B: operator delete[](void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==13027==    by 0x10E215: Scene::render(int, int, int, int, int, char*, int, bool) (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027==    by 0x10F25F: main (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027==  Address 0x5fcf910 is 0 bytes inside a block of size 24 alloc'd
+==13027==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==13027==    by 0x10D0B5: Scene::render(int, int, int, int, int, char*, int, bool) (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027==    by 0x10F25F: main (in /home/acheroufkebir/PAP/pap_ray_tracing_final/main)
+==13027== 
+==13027== ERROR SUMMARY: 43 errors from 7 contexts (suppressed: 0 from 0)
diff --git a/vector3f.h b/vector3f.h
index b6ba1e3045bf52b45cdab965399061b76d95fde6..242e9857d2cae588dbb744adf1d69dc1199a579a 100644
--- a/vector3f.h
+++ b/vector3f.h
@@ -4,7 +4,7 @@
 
 /*!
  * \file vector3f.h
- * \brief Implémentation des vecteurs 3D
+ * \brief Implémentation des vecteurs 3D
  */
 #include <ostream>
 
@@ -16,7 +16,7 @@
  * \class Vector3f
  * \brief Classe représentant un vecteur dans l'espace
  *
- * La classe permet de générer des vecteur et de réaliser des calculs sur ceux-ci
+ * La classe permet de générer des vecteurs et de réaliser des calculs sur ceux-ci
  */
 class Vector3f
 {
@@ -41,7 +41,7 @@ class Vector3f
 	 * \brief Constructeur de copie
 	 *
 	 * Constructeur de copie de la classe Vector3f
-	 * \param v le vecteur àcopier dans this
+	 * \param v le vecteur à copier dans this
 	 */
 		Vector3f(const Vector3f & v);
 		Vector3f();