From d05a0fb4d0c5dfd3b65bf073f3c032f9f219ecaf Mon Sep 17 00:00:00 2001 From: Godzil Date: Mon, 2 Mar 2020 14:09:30 +0000 Subject: [PATCH] Update ch11 reflection scene to render the 3 different view --- tests/ch11_reflection.cpp | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/tests/ch11_reflection.cpp b/tests/ch11_reflection.cpp index ed2ab4e..552f7c7 100644 --- a/tests/ch11_reflection.cpp +++ b/tests/ch11_reflection.cpp @@ -97,21 +97,45 @@ int main() w.addObject(&ref3); /* Add light */ - Light light = Light(POINT_LIGHT, Point(-10, 10, -10), Colour(1, 1, 1)); + //Light light = Light(POINT_LIGHT, Point(-10, 10, -10), Colour(1, 1, 1)); + Light light = Light(AREA_LIGHT, Point(-9, 10, -9), + Vector(2, 0, 0), 5, + Vector(0, 2, 0), 5, + + Colour(1, 1, 1)); w.addLight(&light); +#define WIDTH (100) +#define HEIGHT (50) + /* Set the camera */ - Camera camera = Camera(100, 50, M_PI / 3); + Camera camera = Camera(WIDTH, HEIGHT, M_PI / 3); camera.setTransform(viewTransform(Point(0, 1.5, -5), Point(0, 1, 0), Vector(0, 1, 0))); - /* Now render it */ + printf("Render full scene...\n"); Canvas image = camera.render(w); - image.SaveAsPNG("ch11_reflection.png"); + /* Let's try to zoom on the small reflective ball in the back */ + Camera camera2 = Camera(HEIGHT, HEIGHT, M_PI / 40); + camera2.setTransform(viewTransform(Point(0, 1.5, -5), + Point(1, 1, .4), + Vector(0, 1, 0))); + printf("Render reflective ball...\n"); + Canvas image2 = camera2.render(w); + image2.SaveAsPNG("ch11_zooming_on_reflective_ball.png"); + + /* Zooming on a reflexion on a reflective ball */ + Camera camera3 = Camera(HEIGHT, HEIGHT, M_PI / 600); + camera3.setTransform(viewTransform(Point(0, 1.5, -5), + Point(1.05, 1.063, .4), + Vector(0, 1, 0))); + printf("Render reflection on ball...\n"); + Canvas image3 = camera3.render(w); + image3.SaveAsPNG("ch11_reflection_on_ball.png"); return 0; } \ No newline at end of file