From d87bbb184e328175d6e3505e73ce781a655d6cbb Mon Sep 17 00:00:00 2001 From: Godzil Date: Sat, 22 Feb 2020 22:58:57 +0000 Subject: [PATCH] And now we have cylinders! --- README.md | 6 +- output/ch13_test.png | Bin 0 -> 111018 bytes source/include/cylinder.h | 33 ++++++ source/include/shape.h | 1 + source/shapes/cylinder.cpp | 109 ++++++++++++++++++ tests/CMakeLists.txt | 8 +- tests/ch12_test.cpp | 4 +- tests/ch13_test.cpp | 191 +++++++++++++++++++++++++++++++ tests/cylinder_test.cpp | 223 +++++++++++++++++++++++++++++++++++++ 9 files changed, 571 insertions(+), 4 deletions(-) create mode 100644 output/ch13_test.png create mode 100644 source/include/cylinder.h create mode 100644 source/shapes/cylinder.cpp create mode 100644 tests/ch13_test.cpp create mode 100644 tests/cylinder_test.cpp diff --git a/README.md b/README.md index bee7bc0..8a99c40 100644 --- a/README.md +++ b/README.md @@ -48,4 +48,8 @@ From Chapter 11 - Reflections, Transparency & Refractions From Chapter 12 - Cubes: -![Chapter 12 rendering test](output/ch12_test.png) \ No newline at end of file +![Chapter 12 rendering test](output/ch12_test.png) + +From Chapter 13 - Cylinders: + +![Chapter 13 rendering test](output/ch13_test.png) \ No newline at end of file diff --git a/output/ch13_test.png b/output/ch13_test.png new file mode 100644 index 0000000000000000000000000000000000000000..603ca2a9d2b3a8a1ebfa27110a3899cea1b19374 GIT binary patch literal 111018 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 literal 0 HcmV?d00001 diff --git a/source/include/cylinder.h b/source/include/cylinder.h new file mode 100644 index 0000000..7950c13 --- /dev/null +++ b/source/include/cylinder.h @@ -0,0 +1,33 @@ +/* + * DoRayMe - a quick and dirty Raytracer + * Cylinder header + * + * Created by Manoël Trapier + * Copyright (c) 2020 986-Studio. + * + */ +#ifndef DORAYME_CYLINDER_H +#define DORAYME_CYLINDER_H + +#include +#include +#include + +class Cylinder : public Shape { +private: + Intersect localIntersect(Ray r); + + Tuple localNormalAt(Tuple point); + + bool checkCap(Ray r, double t); + void intersectCaps(Ray r, Intersect &xs); + +public: + bool isClosed; + double minCap; + double maxCap; + + Cylinder() : minCap(-INFINITY), maxCap(INFINITY), isClosed(false), Shape(SHAPE_CYLINDER) {}; +}; + +#endif //DORAYME_CYLINDER_H diff --git a/source/include/shape.h b/source/include/shape.h index 320a307..e0010aa 100644 --- a/source/include/shape.h +++ b/source/include/shape.h @@ -23,6 +23,7 @@ enum ShapeType SHAPE_SPHERE, SHAPE_PLANE, SHAPE_CUBE, + SHAPE_CYLINDER, SHAPE_CONE, }; diff --git a/source/shapes/cylinder.cpp b/source/shapes/cylinder.cpp new file mode 100644 index 0000000..f10ddd3 --- /dev/null +++ b/source/shapes/cylinder.cpp @@ -0,0 +1,109 @@ +/* + * DoRayMe - a quick and dirty Raytracer + * Cylinder implementation + * + * Created by Manoël Trapier + * Copyright (c) 2020 986-Studio. + * + */ +#include +#include +#include +#include +#include + +bool Cylinder::checkCap(Ray r, double t) +{ + /* Helping function to reduce duplication. + * Checks to see if the intersection ot t is within a radius + * of 1 (the radius of our cylinder from the y axis + */ + double x = r.origin.x + t * r.direction.x; + double z = r.origin.z + t * r.direction.z; + return (x * x + z * z) <= 1; +} + +void Cylinder::intersectCaps(Ray r, Intersect &xs) +{ + /* Caps only mattter is the cylinder is closed, and might possibly be + * intersected by the ray + */ + if ((this->isClosed) && (fabs(r.direction.y) > getEpsilon())) + { + double t; + /* Check for an intersection with the lower end cap by intersecting + * the ray with the plan at y = this->minCap + */ + t = (this->minCap - r.origin.y) / r.direction.y; + if (this->checkCap(r, t)) + { + xs.add(Intersection(t, this)); + } + + /* Check for an intersection with the upper end cap by intersecting + * the ray with the plan at y = this->maxCap + */ + t = (this->maxCap - r.origin.y) / r.direction.y; + if (this->checkCap(r, t)) + { + xs.add(Intersection(t, this)); + } + } +} + +Intersect Cylinder::localIntersect(Ray r) +{ + Intersect ret; + + double A = r.direction.x * r.direction.x + r.direction.z * r.direction.z; + + /* Ray is parallel to the Y axis */ + if (A >= getEpsilon()) + { + double B = 2 * r.origin.x * r.direction.x + + 2 * r.origin.z * r.direction.z; + double C = r.origin.x * r.origin.x + r.origin.z * r.origin.z - 1; + + double disc = B * B - 4 * A * C; + + if (disc >= 0) + { + double t0 = (-B - sqrt(disc)) / (2 * A); + double t1 = (-B + sqrt(disc)) / (2 * A); + + double y0 = r.origin.y + t0 * r.direction.y; + if ((this->minCap < y0) && (y0 < this->maxCap)) + { + ret.add(Intersection(t0, this)); + } + + double y1 = r.origin.y + t1 * r.direction.y; + if ((this->minCap < y1) && (y1 < this->maxCap)) + { + ret.add(Intersection(t1, this)); + } + } + } + + this->intersectCaps(r, ret); + + return ret; +} + +Tuple Cylinder::localNormalAt(Tuple point) +{ + /* Compute the square of the distance from the Y axis */ + double dist = point.x * point.x + point.z * point.z; + + if ((dist < 1) && (point.y >= (this->maxCap - getEpsilon()))) + { + return Vector(0, 1, 0); + } + + if ((dist < 1) && (point.y <= this->minCap + getEpsilon())) + { + return Vector(0, -1, 0); + } + + return Vector(point.x, 0, point.z); +} diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 98b1ed2..fdca6f2 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -5,7 +5,7 @@ find_package(Threads REQUIRED) set(TESTS_SRC math_test.cpp 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 plane_test.cpp pattern_test.cpp cube_test.cpp) + shape_test.cpp plane_test.cpp pattern_test.cpp cube_test.cpp cylinder_test.cpp) add_executable(testMyRays) target_include_directories(testMyRays PUBLIC ${gtest_SOURCE_DIR}/include ${gtest_SOURCE_DIR}) @@ -69,6 +69,11 @@ target_include_directories(ch12_test PUBLIC ../source/include) target_sources(ch12_test PRIVATE ch12_test.cpp) target_link_libraries(ch12_test rayonnement) +add_executable(ch13_test) +target_include_directories(ch13_test PUBLIC ../source/include) +target_sources(ch13_test PRIVATE ch13_test.cpp) +target_link_libraries(ch13_test rayonnement) + add_test(NAME Chapter05_Test COMMAND $) add_test(NAME Chapter06_Test COMMAND $) add_test(NAME Chapter07_Test COMMAND $) @@ -78,4 +83,5 @@ add_test(NAME Chapter11_Reflection COMMAND $) add_test(NAME Chapter11_Refraction COMMAND $) add_test(NAME Chapter11_Test COMMAND $) add_test(NAME Chapter12_Test COMMAND $) +add_test(NAME Chapter13_Test COMMAND $) add_test(NAME Hw3Render COMMAND $ ${CMAKE_CURRENT_SOURCE_DIR}/test.hw3scene) \ No newline at end of file diff --git a/tests/ch12_test.cpp b/tests/ch12_test.cpp index 50ae205..eecb4fa 100644 --- a/tests/ch12_test.cpp +++ b/tests/ch12_test.cpp @@ -120,7 +120,7 @@ int main() /* Little cube 1 */ Cube lilCube1 = Cube(); - lilCube1.setTransform(translation(1, 3.25, -0.9) * + lilCube1.setTransform(translation(1, 3.35, -0.9) * rotationY(-0.4) * scaling(0.15, 0.15, 0.15)); lilCube1.material.colour = Colour(1, 0.5, 0.5); @@ -199,7 +199,7 @@ int main() /* ----------------------------- */ /* Set the camera */ - Camera camera = Camera(400, 200, 0.785); + Camera camera = Camera(1000, 500, 0.785); camera.setTransform(viewTransform(Point(8, 6, -8), Point(0, 3, 0), Vector(0, 1, 0))); diff --git a/tests/ch13_test.cpp b/tests/ch13_test.cpp new file mode 100644 index 0000000..b9aec01 --- /dev/null +++ b/tests/ch13_test.cpp @@ -0,0 +1,191 @@ +/* + * DoRayMe - a quick and dirty Raytracer + * Render test for reflection in chapter 13. + * + * Created by Manoël Trapier + * Copyright (c) 2020 986-Studio. + * + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +int main() +{ + World w = World(); + + /* Add light */ + Light light = Light(POINT_LIGHT, Point(1, 6.9, -4.9), Colour(1, 1, 1)); + w.addLight(&light); + + /* ----------------------------- */ + + /* The floor / ceiling */ + Plane floor = Plane(); + floor.material.pattern = new CheckersPattern(Colour(0.5, 0.5, 0.5), Colour(0.75, 0.75, 0.75)); + floor.material.pattern->setTransform(rotationY(0.3) * scaling(0.25, 0.25, 0.25)); + w.addObject(&floor); + + /* ----------------------------- */ + + Cylinder cyl1 = Cylinder(); + cyl1.minCap = 0; + cyl1.maxCap = 0.75; + cyl1.isClosed = true; + cyl1.setTransform(translation(-1, 0, 1) * scaling(0.5, 1, 0.5)); + cyl1.material.colour = Colour(0, 0, 0.6); + cyl1.material.diffuse = 0.1; + cyl1.material.specular = 0.9; + cyl1.material.shininess = 300; + cyl1.material.reflective = 0.9; + w.addObject(&cyl1); + + /* ----------------------------- */ + + /* Concentrics */ + Cylinder cons1 = Cylinder(); + cons1.minCap = 0; + cons1.maxCap = 0.2; + cons1.isClosed = false; + cons1.setTransform(translation(1, 0, 0) * scaling(0.8, 1, 0.8)); + cons1.material.colour = Colour(1, 1, 0.3); + cons1.material.ambient = 0.1; + cons1.material.diffuse = 0.8; + cons1.material.specular = 0.9; + cons1.material.shininess = 300; + w.addObject(&cons1); + + Cylinder cons2 = Cylinder(); + cons2.minCap = 0; + cons2.maxCap = 0.3; + cons2.isClosed = false; + cons2.setTransform(translation(1, 0, 0) * scaling(0.6, 1, 0.6)); + cons2.material.colour = Colour(1, 0.9, 0.4); + cons2.material.ambient = 0.1; + cons2.material.diffuse = 0.8; + cons2.material.specular = 0.9; + cons2.material.shininess = 300; + w.addObject(&cons2); + + Cylinder cons3 = Cylinder(); + cons3.minCap = 0; + cons3.maxCap = 0.4; + cons3.isClosed = false; + cons3.setTransform(translation(1, 0, 0) * scaling(0.4, 1, 0.4)); + cons3.material.colour = Colour(1, 0.8, 0.5); + cons3.material.ambient = 0.1; + cons3.material.diffuse = 0.8; + cons3.material.specular = 0.9; + cons3.material.shininess = 300; + w.addObject(&cons3); + + Cylinder cons4 = Cylinder(); + cons4.minCap = 0; + cons4.maxCap = 0.5; + cons4.isClosed = true; + cons4.setTransform(translation(1, 0, 0) * scaling(0.2, 1, 0.2)); + cons4.material.colour = Colour(1, 0.7, 0.6); + cons4.material.ambient = 0.1; + cons4.material.diffuse = 0.8; + cons4.material.specular = 0.9; + cons4.material.shininess = 300; + w.addObject(&cons4); + + /* ----------------------------- */ + + /* decoratives cylinders */ + Cylinder deco1 = Cylinder(); + deco1.minCap = 0; + deco1.maxCap = 0.3; + deco1.isClosed = true; + deco1.setTransform(translation(0, 0, -0.75) * scaling(0.05, 1, 0.05)); + deco1.material.colour = Colour(1, 0, 0); + deco1.material.ambient = 0.1; + deco1.material.diffuse = 0.9; + deco1.material.specular = 0.9; + deco1.material.shininess = 300; + w.addObject(&deco1); + + Cylinder deco2 = Cylinder(); + deco2.minCap = 0; + deco2.maxCap = 0.3; + deco2.isClosed = true; + deco2.setTransform(translation(0, 0, -2.25) * rotationY(-0.15) * translation(0, 0, 1.5) * scaling(0.05, 1, 0.05)); + deco2.material.colour = Colour(1, 1, 0); + deco2.material.ambient = 0.1; + deco2.material.diffuse = 0.9; + deco2.material.specular = 0.9; + deco2.material.shininess = 300; + w.addObject(&deco2); + + Cylinder deco3 = Cylinder(); + deco3.minCap = 0; + deco3.maxCap = 0.3; + deco3.isClosed = true; + deco3.setTransform(translation(0, 0, -2.25) * rotationY(-0.3) * translation(0, 0, 1.5) * scaling(0.05, 1, 0.05)); + deco3.material.colour = Colour(0, 1, 0); + deco3.material.ambient = 0.1; + deco3.material.diffuse = 0.9; + deco3.material.specular = 0.9; + deco3.material.shininess = 300; + w.addObject(&deco3); + + Cylinder deco4 = Cylinder(); + deco4.minCap = 0; + deco4.maxCap = 0.3; + deco4.isClosed = true; + deco4.setTransform(translation(0, 0, -2.25) * rotationY(-0.45) * translation(0, 0, 1.5) * scaling(0.05, 1, 0.05)); + deco4.material.colour = Colour(0, 1, 1); + deco4.material.ambient = 0.1; + deco4.material.diffuse = 0.9; + deco4.material.specular = 0.9; + deco4.material.shininess = 300; + w.addObject(&deco4); + + /* ----------------------------- */ + + /* glass cylinder */ + Cylinder glassCylinder = Cylinder(); + glassCylinder.minCap = 0.0001; + glassCylinder.maxCap = 0.5; + glassCylinder.isClosed = true; + glassCylinder.setTransform(translation(0, 0, -1.5) * scaling(0.33, 1, 0.33)); + glassCylinder.material.colour = Colour(0.25, 0, 0); + glassCylinder.material.diffuse = 0.1; + glassCylinder.material.specular = 0.9; + glassCylinder.material.shininess = 300; + glassCylinder.material.reflective = 0.9; + glassCylinder.material.transparency = 0.9; + glassCylinder.material.refractiveIndex = 1.5; + w.addObject(&glassCylinder); + + /* ----------------------------- */ + + /* Set the camera */ + Camera camera = Camera(400, 200, 0.314); + camera.setTransform(viewTransform(Point(8, 3.5, -9), + Point(0, 0.3, 0), + Vector(0, 1, 0))); + + /* Now render it */ + Canvas image = camera.render(w, 20); + + image.SaveAsPNG("ch13_test.png"); + + return 0; +} \ No newline at end of file diff --git a/tests/cylinder_test.cpp b/tests/cylinder_test.cpp new file mode 100644 index 0000000..af781c1 --- /dev/null +++ b/tests/cylinder_test.cpp @@ -0,0 +1,223 @@ +/* + * DoRayMe - a quick and dirty Raytracer + * Cylinder unit tests + * + * Created by Manoël Trapier + * Copyright (c) 2020 986-Studio. + * + */ +#include +#include +#include +#include +#include + +TEST(CylinderTest, A_ray_miss_a_cylinder) +{ + Cylinder cyl = Cylinder(); + + Point Origins[] = { + Point(1, 0, 0), + Point(0, 0, 0), + Point(0, 0, -5), + }; + + Vector Directions[] = { + Vector(0, 1, 0), + Vector(0, 1, 0), + Vector(1, 1, 1), + }; + + int i; + for(i = 0; i < 3; i++) + { + Tuple direction = Directions[i].normalise(); + Ray r = Ray(Origins[i], direction); + + Intersect xs = cyl.intersect(r); + + ASSERT_EQ(xs.count(), 0); + } +} + +TEST(CylinderTest, A_ray_hit_a_cylinder) +{ + Cylinder cyl = Cylinder(); + + Point Origins[] = { + Point(1, 0, -5), + Point(0, 0, -5), + Point(0.5, 0, -5), + }; + + Vector Directions[] = { + Vector(0, 0, 1), + Vector(0, 0, 1), + Vector(0.1, 1, 1), + }; + + double t0s[] = { 5, 4, 6.80798 }; + double t1s[] = { 5, 6, 7.08872 }; + + int i, j; + for(i = 0; i < 3; i++) + { + Tuple direction = Directions[i].normalise(); + Ray r = Ray(Origins[i], direction); + + Intersect xs = cyl.intersect(r); + + /* Temporary lower the precision */ + set_equal_precision(0.00001); + + ASSERT_EQ(xs.count(), 2); + EXPECT_TRUE(double_equal(xs[0].t, t0s[i])); + EXPECT_TRUE(double_equal(xs[1].t, t1s[i])); + + set_equal_precision(FLT_EPSILON); + } +} + +TEST(CylinderTest, Normal_vector_on_a_cylinder) +{ + Cylinder cyl = Cylinder(); + + Point HitPointss[] = { + Point(1, 0, 0), + Point(0, 5, -1), + Point(0, -2, 1), + Point(-1, 1, 0), + }; + + Vector Normals[] = { + Vector(1, 0, 0), + Vector(0, 0, -1), + Vector(0, 0, 1), + Vector(-1, 0, 0), + }; + + int i; + for(i = 0; i < 4; i++) + { + ASSERT_EQ(cyl.normalAt(HitPointss[i]), Normals[i]); + } +} + +TEST(CylinderTest, The_default_minimum_and_maximum_for_a_cylinder) +{ + Cylinder cyl = Cylinder(); + ASSERT_EQ(cyl.minCap, -INFINITY); + ASSERT_EQ(cyl.maxCap, INFINITY); +} + +TEST(CylinderTest, Intersecting_a_constrained_cylinder) +{ + Point Origins[] = { + Point(0, 1.5, 0), + Point(0, 3, -5), + Point(0, 0, -5), + Point(0, 2, -5), + Point(0, 1, -5), + Point(0, 1.5, -2), + }; + + Vector Directions[] = { + Vector(0.1, 1, 0), + Vector(0, 0, 1), + Vector(0, 0, 1), + Vector(0, 0, 1), + Vector(0, 0, 1), + Vector(0., 0, 1), + }; + + uint32_t Counts[] = { 0, 0, 0, 0, 0, 2 }; + + Cylinder cyl = Cylinder(); + cyl.minCap = 1; + cyl.maxCap = 2; + + int i; + for(i = 0; i < 6; i++) + { + Tuple direction = Directions[i].normalise(); + Ray r = Ray(Origins[i], direction); + + Intersect xs = cyl.intersect(r); + + ASSERT_EQ(xs.count(), Counts[i]); + } +} + +TEST(CylinderTest, The_default_closed_value_for_a_cylinder) +{ + Cylinder cyl = Cylinder(); + ASSERT_EQ(cyl.isClosed, false); +} +TEST(CylinderTest, Intersecting_the_caps_of_a_close_cylinder) +{ + Point Origins[] = { + Point(0, 3, 0), + Point(0, 3, -2), + Point(0, 4, -2), /* Edge case */ + Point(0, 0, -5), + Point(0, -1, -2), /* Edge case */ + }; + + Vector Directions[] = { + Vector(0, -1, 0), + Vector(0, -1, 2), + Vector(0, -1, 1), + Vector(0, 1, 2), + Vector(0, 1, 1), + }; + + uint32_t Counts[] = { 2, 2, 2, 2, 2 }; + + Cylinder cyl = Cylinder(); + cyl.minCap = 1; + cyl.maxCap = 2; + cyl.isClosed = true; + + int i; + for(i = 0; i < 5; i++) + { + Tuple direction = Directions[i].normalise(); + Ray r = Ray(Origins[i], direction); + + Intersect xs = cyl.intersect(r); + ASSERT_EQ(xs.count(), Counts[i]); + } +} + +TEST(CylinderTest, The_normal_on_a_cylinder_end_cap) +{ + Cylinder cyl = Cylinder(); + + Point HitPointss[] = { + Point(0, 1, 0), + Point(0.5, 1, 0), + Point(0, 1, 0.5), + Point(0, 2, 0), + Point(0.5, 2, 0), + Point(0, 2, 0.5), + }; + + Vector Normals[] = { + Vector(0, -1, 0), + Vector(0, -1, 0), + Vector(0, -1, 0), + Vector(0, 1, 0), + Vector(0, 1, 0), + Vector(0, 1, 0), + }; + + cyl.minCap = 1; + cyl.maxCap = 2; + cyl.isClosed = true; + + int idx; + for(idx = 0; idx < 6; idx++) + { + ASSERT_EQ(cyl.normalAt(HitPointss[idx]), Normals[idx]); + } +} \ No newline at end of file