diff --git a/0.png b/0.png index b37725891bf25d3c0fbdde2c98aa8edd4be1acbb..0ac888ac5fd8aea0c0b896f0c09a7cda4f02d8c3 100644 Binary files a/0.png and b/0.png differ diff --git a/1.png b/1.png new file mode 100644 index 0000000000000000000000000000000000000000..3484d2131798efa4f062cd1761cea3d899d51728 Binary files /dev/null and b/1.png differ diff --git a/main b/main new file mode 100644 index 0000000000000000000000000000000000000000..d1569d395ae0026a97300d382cda0dcc592ae451 Binary files /dev/null and b/main differ diff --git a/scene.cpp b/scene.cpp index f87bfbf1f35d11aef06af5513595debb54adbfed..cbe90ccc789a678105a03fd0928e50c78cc58102 100644 --- a/scene.cpp +++ b/scene.cpp @@ -1,5 +1,6 @@ #include "scene.h" #include <png.h> +#include <math.h> //fmin @@ -135,11 +136,13 @@ 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 + if (shadow) { - row[3*(nb_pixel_row-1-j)] = 50; - row[3*(nb_pixel_row-1-j) + 1] = 50; - row[3*(nb_pixel_row-1-j) + 2] = 50; + row[3*(nb_pixel_row-1-j)] = fmin(50, 50*intensity); + row[3*(nb_pixel_row-1-j) + 1] = fmin(50, 50*intensity); + row[3*(nb_pixel_row-1-j) + 2] = fmin(50, 50*intensity); } else @@ -149,16 +152,16 @@ void Scene::render(int width, int height, int nb_pixel_row, int nb_pixel_col, in if ( dist(reflect_to_source.origin() , shapes_[k]->reflect(source_to_reflect).origin()) > 0.5 ) //self_shadow { - row[3*(nb_pixel_row-1-j)] = shapes_[k]->matter().r() / 2; - row[3*(nb_pixel_row-1-j) + 1] = shapes_[k]->matter().g() / 2; - row[3*(nb_pixel_row-1-j) + 2] = 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 + else //il faut rajouter la réflexion { - row[3*(nb_pixel_row-1-j)] = shapes_[k]->matter().r(); - row[3*(nb_pixel_row-1-j) + 1] = shapes_[k]->matter().g(); - row[3*(nb_pixel_row-1-j) + 2] = shapes_[k]->matter().b(); + 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.); + row[3*(nb_pixel_row-1-j) + 2] = fmin(shapes_[k]->matter().b() * intensity, 255.); } } }