diff --git a/CMakeLists.txt b/CMakeLists.txt index 373c5f204c1de3dce759b063cb21ce4d91024089..01ff39dbe3f11ba0f5ec07c12f8d79a3b3ed1b19 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,6 +21,7 @@ project(intersection) add_executable( tests tests/unit_tests/simple_triangle_tests.cpp + tests/unit_tests/contourize_tests.cpp src/intersections/intersections.cpp src/shapes/triangle.cpp src/shapes/triangle_edges.cpp @@ -29,6 +30,7 @@ add_executable( src/orientation/orientation.cpp src/shapes/point.cpp src/union.cpp + src/triangulation/triangulation.cpp ) include_directories(src) diff --git a/src/shapes/triangle.cpp b/src/shapes/triangle.cpp index 03fb6e277fd64812015c9ddd4ceacdf595a818e5..10229a50976e495b824f04ee961cc9a2e37826cf 100644 --- a/src/shapes/triangle.cpp +++ b/src/shapes/triangle.cpp @@ -2,7 +2,7 @@ #include "triangle_edges.h" #include "edge.h" -bool Triangle::neighbours(Triangle &other) { +bool Triangle::neighbours(const Triangle &other) const { return false; } diff --git a/src/shapes/triangle.h b/src/shapes/triangle.h index cdc477cc05c0438f2757927b821458709f8387b1..32b2315f710200844d8b71674dbfde0449568bdb 100644 --- a/src/shapes/triangle.h +++ b/src/shapes/triangle.h @@ -5,7 +5,7 @@ struct Triangle { Point points[3]; int depth; - bool neighbours(Triangle &other); - Triangle(Point p1, Point p2, Point p3, int depth); + bool neighbours(const Triangle &other) const; + Triangle(Point p1, Point p2, Point p3, int depth); bool pointInTriangle(const Point &p) const; }; diff --git a/src/triangulation/triangulation.cpp b/src/triangulation/triangulation.cpp index b924ef8775b79f486df6f94ce2f798b132097265..bbd45b7ac106dade9d3418637f5e72a0996c0b9e 100644 --- a/src/triangulation/triangulation.cpp +++ b/src/triangulation/triangulation.cpp @@ -1,5 +1,5 @@ #include "triangulation.h" -std::vector<Triangle> triangulate(std::vector<Point> &points) { +std::vector<Triangle> monotoneTriangulate(std::vector<Point> &points) { } \ No newline at end of file diff --git a/src/triangulation/triangulation.h b/src/triangulation/triangulation.h index efbed9f7a3ac893779710d3276bf7828ec1499dc..30317cb0ed0b6e6b1d7bad0325d3b31afdbbef0b 100644 --- a/src/triangulation/triangulation.h +++ b/src/triangulation/triangulation.h @@ -4,4 +4,4 @@ struct Triangle; struct Point; -std::vector<Triangle> triangulate(std::vector<Point> &points); \ No newline at end of file +std::vector<Triangle> monotoneTriangulate(std::vector<Point> &points); \ No newline at end of file diff --git a/src/union.cpp b/src/union.cpp index 46a3939438ea0ded9f0e52a0b1ec2947ced8ec97..09d7fb6b5d15c643717b256da4da64186a479ab7 100644 --- a/src/union.cpp +++ b/src/union.cpp @@ -4,8 +4,9 @@ #include <intersections/intersections.h> #include <contourize/contourize.h> #include <triangulation/triangulation.h> +#include <union.h> -std::vector<Triangle> unionize(Triangle t1, Triangle t2) { +std::vector<Triangle> unionize(const Triangle &t1, const Triangle &t2) { // if neighbours, do nothing if (t1.neighbours(t2)) { @@ -22,7 +23,7 @@ std::vector<Triangle> unionize(Triangle t1, Triangle t2) { std::vector<Point> contour = contourize(t1, t2, newIntersections); - return triangulate(contour); + return monotoneTriangulate(contour); } void unionize(Triangle soup) { diff --git a/src/union.h b/src/union.h index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c6bca294f6b9d86e47c24060250b088da177ff59 100644 --- a/src/union.h +++ b/src/union.h @@ -0,0 +1,5 @@ +#pragma once + +#include <vector> + +std::vector<Triangle> unionize(const Triangle &t1, const Triangle &t2); \ No newline at end of file diff --git a/tests/union_tests.cpp b/tests/union_tests.cpp index 79dad85f930153d8ad75b8c29895ee992a9c92f4..b0b131b6f32acbaf68bc65c43ad28d0d317aab79 100644 --- a/tests/union_tests.cpp +++ b/tests/union_tests.cpp @@ -1,2 +1,6 @@ #include "gtest/gtest.h" +#include <union.h> +TEST (UnionTrivialTests, NotTouching) { + +} \ No newline at end of file diff --git a/tests/unit_tests/contourize_tests.cpp b/tests/unit_tests/contourize_tests.cpp index 041a98d90865c26657deae4f927293177da8b7ed..27e318d41095b9147574d4f075a39859315a7a25 100644 --- a/tests/unit_tests/contourize_tests.cpp +++ b/tests/unit_tests/contourize_tests.cpp @@ -3,13 +3,13 @@ #include <intersections/intersections.h> TEST(ContourizeTest, TwoTriangles) { - auto t1 = Triangle(Point(0,0), Point(2,3), Point(5,0), 0); - auto t2 = Triangle(Point(3,1), Point(4,3), Point(6,1), 0); + auto t1 = Triangle(Point(0,0), Point(5,0), Point(2,3), 0); + auto t2 = Triangle(Point(3,1), Point(6,1), Point(4,3), 0); auto newIntersections = intersections(t1, t2); auto contour = contourize(t1, t2, newIntersections); - //EXPECT_EQ(); + EXPECT_TRUE(contour.size() > 0); } \ No newline at end of file