From 9d0db6a635aca2d592d0880d26e0750016b5cd38 Mon Sep 17 00:00:00 2001 From: Godzil Date: Fri, 21 Feb 2020 00:26:48 +0000 Subject: [PATCH] Added planes! --- README.md | 6 +++- output/ch9_test.png | Bin 0 -> 80727 bytes source/include/plane.h | 22 +++++++++++++ source/include/shape.h | 1 + source/shapes/plane.cpp | 36 ++++++++++++++++++++ tests/CMakeLists.txt | 10 ++++-- tests/ch9_test.cpp | 69 ++++++++++++++++++++++++++++++++++++++ tests/plane_test.cpp | 71 ++++++++++++++++++++++++++++++++++++++++ 8 files changed, 212 insertions(+), 3 deletions(-) create mode 100644 output/ch9_test.png create mode 100644 source/include/plane.h create mode 100644 source/shapes/plane.cpp create mode 100644 tests/ch9_test.cpp create mode 100644 tests/plane_test.cpp diff --git a/README.md b/README.md index 21bd921..bac884f 100644 --- a/README.md +++ b/README.md @@ -28,4 +28,8 @@ From Chapter 07: From Chapter 08: -![Chapter 8 rendering test](output/ch8_test.png) \ No newline at end of file +![Chapter 8 rendering test](output/ch8_test.png) + +From Chapter 09: + +![Chapter 9 rendering test](output/ch9_test.png) \ No newline at end of file diff --git a/output/ch9_test.png b/output/ch9_test.png new file mode 100644 index 0000000000000000000000000000000000000000..2ffb372cf60df37700d22f0911a30180872f28f4 GIT binary patch literal 80727 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 literal 0 HcmV?d00001 diff --git a/source/include/plane.h b/source/include/plane.h new file mode 100644 index 0000000..9fe3cc2 --- /dev/null +++ b/source/include/plane.h @@ -0,0 +1,22 @@ +/* + * DoRayMe - a quick and dirty Raytracer + * Plane header + * + * Created by Manoël Trapier + * Copyright (c) 2020 986-Studio. + * + */ +#ifndef DORAYME_PLANE_H +#define DORAYME_PLANE_H + +class Plane : public Shape +{ +private: + Intersect localIntersect(Ray r); + Tuple localNormalAt(Tuple point); + +public: + Plane() : Shape(SHAPE_PLANE) { }; +}; + +#endif //DORAYME_PLANE_H diff --git a/source/include/shape.h b/source/include/shape.h index 9750dde..11f1f08 100644 --- a/source/include/shape.h +++ b/source/include/shape.h @@ -21,6 +21,7 @@ enum ShapeType { SHAPE_NONE, SHAPE_SPHERE, + SHAPE_PLANE, }; /* Base class for all object that can be presented in the world */ diff --git a/source/shapes/plane.cpp b/source/shapes/plane.cpp new file mode 100644 index 0000000..f6399b7 --- /dev/null +++ b/source/shapes/plane.cpp @@ -0,0 +1,36 @@ +/* + * DoRayMe - a quick and dirty Raytracer + * Plane implementation + * + * Created by Manoël Trapier + * Copyright (c) 2020 986-Studio. + * + */ +#include +#include +#include +#include +#include + +Intersect Plane::localIntersect(Ray r) +{ + double t; + Intersect ret = Intersect(); + + if (fabs(r.direction.y) < getEpsilon()) + { + /* With a direction == 0, the ray can't intersect the plane */ + return ret; + } + + t = -r.origin.y / r.direction.y; + + ret.add(Intersection(t, this)); + + return ret; +} + +Tuple Plane::localNormalAt(Tuple point) +{ + return Vector(0, 1, 0); +} \ No newline at end of file diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 22a4ad5..d4b55d8 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -5,7 +5,7 @@ find_package(Threads REQUIRED) set(TESTS_SRC tuple_test.cpp colour_test.cpp canvas_test.cpp matrix_test.cpp transformation_test.cpp ray_test.cpp intersect_test.cpp sphere_test.cpp light_test.cpp material_test.cpp world_test.cpp camera_test.cpp - shape_test.cpp) + shape_test.cpp plane_test.cpp) add_executable(testMyRays) target_include_directories(testMyRays PUBLIC ${gtest_SOURCE_DIR}/include ${gtest_SOURCE_DIR}) @@ -34,6 +34,12 @@ target_include_directories(ch6_test PUBLIC ../source/include) target_sources(ch7_test PRIVATE ch7_test.cpp) target_link_libraries(ch7_test rayonnement) +add_executable(ch9_test) +target_include_directories(ch6_test PUBLIC ../source/include) +target_sources(ch9_test PRIVATE ch9_test.cpp) +target_link_libraries(ch9_test rayonnement) + add_test(NAME Chapter05_Test COMMAND $) add_test(NAME Chapter06_Test COMMAND $) -add_test(NAME Chapter07_Test COMMAND $) \ No newline at end of file +add_test(NAME Chapter07_Test COMMAND $) +add_test(NAME Chapter09_Test COMMAND $) \ No newline at end of file diff --git a/tests/ch9_test.cpp b/tests/ch9_test.cpp new file mode 100644 index 0000000..a1eaa80 --- /dev/null +++ b/tests/ch9_test.cpp @@ -0,0 +1,69 @@ +/* + * DoRayMe - a quick and dirty Raytracer + * Render test for chapter 5 "Put it together". + * + * Created by Manoël Trapier + * Copyright (c) 2020 986-Studio. + * + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +int main() +{ + /* First we need to construct the world */ + Plane floor = Plane(); + floor.material.colour = Colour(1, 0.9, 0.9); + floor.material.specular = 0; + + Sphere middle = Sphere(); + middle.setTransform(translation(-0.5, 1, 0.5)); + middle.material.colour = Colour(0.1, 1, 0.5); + middle.material.diffuse = 0.7; + middle.material.specular = 0.3; + + Sphere right = Sphere(); + right.setTransform(translation(1.5, 0.5, -0.5) * scaling(0.5, 0.5, 0.5)); + right.material.colour = Colour(0.5, 1, 0.1); + right.material.diffuse = 0.7; + right.material.specular = 0.3; + + Sphere left = Sphere(); + left.setTransform(translation(-1.5, 0.33, -0.75) * scaling(0.33, 0.33, 0.33)); + left.material.colour = Colour(1, 0.8, 0.1); + left.material.diffuse = 0.7; + left.material.specular = 0.3; + + World w = World(); + + w.addObject(&floor); + w.addObject(&middle); + w.addObject(&left); + w.addObject(&right); + + /* Add light */ + Light light = Light(POINT_LIGHT, Point(-10, 10, -10), Colour(1, 1, 1)); + + w.addLight(&light); + + /* Set the camera */ + Camera camera = Camera(1000, 500, M_PI / 3); + camera.setTransform(viewTransform(Point(0, 1.5, -5), + Point(0, 1, 0), + Vector(0, 1, 0))); + + /* Now render it */ + Canvas image = camera.render(w); + + image.SaveAsPNG("ch9_test.png"); + + + return 0; +} \ No newline at end of file diff --git a/tests/plane_test.cpp b/tests/plane_test.cpp new file mode 100644 index 0000000..be06593 --- /dev/null +++ b/tests/plane_test.cpp @@ -0,0 +1,71 @@ +/* + * DoRayMe - a quick and dirty Raytracer + * Plane unit tests + * + * Created by Manoël Trapier + * Copyright (c) 2020 986-Studio. + * + */ + +#include +#include +#include +#include +#include +#include + +TEST(PlaneTest, The_normal_of_a_plane_is_constant_everywhere) +{ + Plane p = Plane(); + Tuple n1 = p.normalAt(Point(0, 0, 0)); + Tuple n2 = p.normalAt(Point(10, 0, -10)); + Tuple n3 = p.normalAt(Point(-5, 0, 0150)); + + ASSERT_EQ(n1, Vector(0, 1, 0)); + ASSERT_EQ(n2, Vector(0, 1, 0)); + ASSERT_EQ(n3, Vector(0, 1, 0)); +} + +TEST(PlaneTest, Intersect_with_a_ray_parallel_to_the_plane) +{ + Plane p = Plane(); + Ray r = Ray(Point(0, 10, 0), Vector(0, 0, 1)); + + Intersect xs = p.intersect(r); + + ASSERT_EQ(xs.count(), 0); +} + +TEST(PlaneTest, Intersect_with_a_coplanar_ray) +{ + Plane p = Plane(); + Ray r = Ray(Point(0, 0, 0), Vector(0, 0, 1)); + + Intersect xs = p.intersect(r); + + ASSERT_EQ(xs.count(), 0); +} + +TEST(PlaneTest, A_ray_intersecting_a_plane_from_above) +{ + Plane p = Plane(); + Ray r = Ray(Point(0, 1, 0), Vector(0, -1, 0)); + + Intersect xs = p.intersect(r); + + ASSERT_EQ(xs.count(), 1); + ASSERT_EQ(xs[0].t, 1); + ASSERT_EQ(xs[0].object, &p); +} + +TEST(PlaneTest, A_ray_intersecting_a_plane_from_below) +{ + Plane p = Plane(); + Ray r = Ray(Point(0, -1, 0), Vector(0, 1, 0)); + + Intersect xs = p.intersect(r); + + ASSERT_EQ(xs.count(), 1); + ASSERT_EQ(xs[0].t, 1); + ASSERT_EQ(xs[0].object, &p); +} \ No newline at end of file