From 377290f0c78fce96fa2eff65cef2758f0bdbfe91 Mon Sep 17 00:00:00 2001
From: Brandon Lai-Cheong <brandon.lai-cheong@uwaterloo.ca>
Date: Fri, 25 Oct 2024 13:14:43 -0400
Subject: [PATCH] refactor into include folder

---
 .vscode/settings.json                         | 68 +++++++++++++++++++
 CMakeLists.txt                                | 11 +--
 {src/contourize => include}/contourize.h      |  0
 {src/shapes => include}/edge.h                |  0
 .../intersections => include}/intersections.h |  3 +-
 {src/orientation => include}/orientation.h    |  0
 {src/shapes => include}/point.h               |  0
 .../static_vector => include}/static_vector.h |  0
 {src/shapes => include}/triangle.h            |  2 +-
 {src/shapes => include}/triangle_edges.h      |  0
 include/triangulation.h                       |  9 +++
 {src => include}/union.h                      |  1 +
 src/shapes/triangle.cpp                       |  6 +-
 src/triangulation/triangulation.cpp           |  5 --
 src/triangulation/triangulation.h             |  7 --
 src/union.cpp                                 |  9 ++-
 src/{contourize => utilities}/contourize.cpp  |  5 +-
 .../intersections.cpp                         |  5 +-
 .../orientation.cpp                           |  2 +-
 src/utilities/triangulation.cpp               | 21 ++++++
 tests/unit_tests/contourize_tests.cpp         | 11 +--
 tests/unit_tests/point_in_triangle_tests.cpp  | 10 +++
 tests/unit_tests/simple_triangle_tests.cpp    | 10 +--
 tests/unit_tests/triangulation_tests.cpp      | 12 ++++
 24 files changed, 152 insertions(+), 45 deletions(-)
 create mode 100644 .vscode/settings.json
 rename {src/contourize => include}/contourize.h (100%)
 rename {src/shapes => include}/edge.h (100%)
 rename {src/intersections => include}/intersections.h (72%)
 rename {src/orientation => include}/orientation.h (100%)
 rename {src/shapes => include}/point.h (100%)
 rename {src/static_vector => include}/static_vector.h (100%)
 rename {src/shapes => include}/triangle.h (86%)
 rename {src/shapes => include}/triangle_edges.h (100%)
 create mode 100644 include/triangulation.h
 rename {src => include}/union.h (85%)
 delete mode 100644 src/triangulation/triangulation.cpp
 delete mode 100644 src/triangulation/triangulation.h
 rename src/{contourize => utilities}/contourize.cpp (96%)
 rename src/{intersections => utilities}/intersections.cpp (95%)
 rename src/{orientation => utilities}/orientation.cpp (91%)
 create mode 100644 src/utilities/triangulation.cpp
 create mode 100644 tests/unit_tests/point_in_triangle_tests.cpp
 create mode 100644 tests/unit_tests/triangulation_tests.cpp

diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..afcc6ec
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,68 @@
+{
+    "files.associations": {
+        "any": "cpp",
+        "array": "cpp",
+        "atomic": "cpp",
+        "bit": "cpp",
+        "*.tcc": "cpp",
+        "cctype": "cpp",
+        "chrono": "cpp",
+        "clocale": "cpp",
+        "cmath": "cpp",
+        "compare": "cpp",
+        "concepts": "cpp",
+        "condition_variable": "cpp",
+        "cstdarg": "cpp",
+        "cstddef": "cpp",
+        "cstdint": "cpp",
+        "cstdio": "cpp",
+        "cstdlib": "cpp",
+        "cstring": "cpp",
+        "ctime": "cpp",
+        "cwchar": "cpp",
+        "cwctype": "cpp",
+        "deque": "cpp",
+        "forward_list": "cpp",
+        "list": "cpp",
+        "map": "cpp",
+        "set": "cpp",
+        "string": "cpp",
+        "unordered_map": "cpp",
+        "unordered_set": "cpp",
+        "vector": "cpp",
+        "exception": "cpp",
+        "algorithm": "cpp",
+        "functional": "cpp",
+        "iterator": "cpp",
+        "memory": "cpp",
+        "memory_resource": "cpp",
+        "numeric": "cpp",
+        "optional": "cpp",
+        "random": "cpp",
+        "ratio": "cpp",
+        "string_view": "cpp",
+        "system_error": "cpp",
+        "tuple": "cpp",
+        "type_traits": "cpp",
+        "utility": "cpp",
+        "fstream": "cpp",
+        "initializer_list": "cpp",
+        "iomanip": "cpp",
+        "iosfwd": "cpp",
+        "iostream": "cpp",
+        "istream": "cpp",
+        "limits": "cpp",
+        "mutex": "cpp",
+        "new": "cpp",
+        "numbers": "cpp",
+        "ostream": "cpp",
+        "semaphore": "cpp",
+        "sstream": "cpp",
+        "stdexcept": "cpp",
+        "stop_token": "cpp",
+        "streambuf": "cpp",
+        "thread": "cpp",
+        "typeinfo": "cpp",
+        "variant": "cpp"
+    }
+}
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 01ff39d..d1a3823 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -22,18 +22,19 @@ add_executable(
 	tests
 	tests/unit_tests/simple_triangle_tests.cpp
 	tests/unit_tests/contourize_tests.cpp
-	src/intersections/intersections.cpp
+	tests/unit_tests/point_in_triangle_tests.cpp
+	src/utilities/intersections.cpp
 	src/shapes/triangle.cpp
 	src/shapes/triangle_edges.cpp
-	src/contourize/contourize.cpp
+	src/utilities/contourize.cpp
 	src/shapes/edge.cpp
-	src/orientation/orientation.cpp
+	src/utilities/orientation.cpp
 	src/shapes/point.cpp
 	src/union.cpp
-	src/triangulation/triangulation.cpp
+	src/utilities/triangulation.cpp
 )
 
-include_directories(src)
+include_directories(include)
 
 target_link_libraries(
 	tests
diff --git a/src/contourize/contourize.h b/include/contourize.h
similarity index 100%
rename from src/contourize/contourize.h
rename to include/contourize.h
diff --git a/src/shapes/edge.h b/include/edge.h
similarity index 100%
rename from src/shapes/edge.h
rename to include/edge.h
diff --git a/src/intersections/intersections.h b/include/intersections.h
similarity index 72%
rename from src/intersections/intersections.h
rename to include/intersections.h
index ca089a0..952d64f 100644
--- a/src/intersections/intersections.h
+++ b/include/intersections.h
@@ -1,7 +1,6 @@
 #pragma once
 #include <vector>
-#include "../shapes/point.h"
-#include "../shapes/triangle.h"
+#include <triangle.h>
 
 struct TrigTrigInterResults {
     std::vector<Point> results;
diff --git a/src/orientation/orientation.h b/include/orientation.h
similarity index 100%
rename from src/orientation/orientation.h
rename to include/orientation.h
diff --git a/src/shapes/point.h b/include/point.h
similarity index 100%
rename from src/shapes/point.h
rename to include/point.h
diff --git a/src/static_vector/static_vector.h b/include/static_vector.h
similarity index 100%
rename from src/static_vector/static_vector.h
rename to include/static_vector.h
diff --git a/src/shapes/triangle.h b/include/triangle.h
similarity index 86%
rename from src/shapes/triangle.h
rename to include/triangle.h
index 32b2315..f95e607 100644
--- a/src/shapes/triangle.h
+++ b/include/triangle.h
@@ -1,7 +1,7 @@
 #pragma once
 #include "point.h"
 
-// points specified clockwise
+// points specified counterclockwise
 struct Triangle {
 	Point points[3];
 	int depth;
diff --git a/src/shapes/triangle_edges.h b/include/triangle_edges.h
similarity index 100%
rename from src/shapes/triangle_edges.h
rename to include/triangle_edges.h
diff --git a/include/triangulation.h b/include/triangulation.h
new file mode 100644
index 0000000..299914a
--- /dev/null
+++ b/include/triangulation.h
@@ -0,0 +1,9 @@
+#pragma once
+#include <vector>
+
+struct Triangle;
+struct Point;
+
+
+std::vector<Triangle> triangulate(std::vector<Point> points);
+
diff --git a/src/union.h b/include/union.h
similarity index 85%
rename from src/union.h
rename to include/union.h
index c6bca29..3aeaae9 100644
--- a/src/union.h
+++ b/include/union.h
@@ -1,5 +1,6 @@
 #pragma once
 
 #include <vector>
+struct Triangle;
 
 std::vector<Triangle> unionize(const Triangle &t1, const Triangle &t2);
\ No newline at end of file
diff --git a/src/shapes/triangle.cpp b/src/shapes/triangle.cpp
index 10229a5..c07c9a4 100644
--- a/src/shapes/triangle.cpp
+++ b/src/shapes/triangle.cpp
@@ -12,7 +12,7 @@ bool Triangle::pointInTriangle(const Point &p) const {
     // all tests must be positive
     auto edges = TriangleEdges(*this);
 
-    return edges.e1.positiveSide(p) &&
-    edges.e2.positiveSide(p) &&
-    edges.e3.positiveSide(p);
+    return !edges.e1.positiveSide(p) &&
+    !edges.e2.positiveSide(p) &&
+    !edges.e3.positiveSide(p);
 }
\ No newline at end of file
diff --git a/src/triangulation/triangulation.cpp b/src/triangulation/triangulation.cpp
deleted file mode 100644
index bbd45b7..0000000
--- a/src/triangulation/triangulation.cpp
+++ /dev/null
@@ -1,5 +0,0 @@
-#include "triangulation.h"
-
-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
deleted file mode 100644
index 30317cb..0000000
--- a/src/triangulation/triangulation.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#pragma once
-#include <vector>
-
-struct Triangle;
-struct Point;
-
-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 09d7fb6..54a9e90 100644
--- a/src/union.cpp
+++ b/src/union.cpp
@@ -1,10 +1,9 @@
-#include "shapes/triangle.h"
 #include <vector>
 #include <optional>
-#include <intersections/intersections.h>
-#include <contourize/contourize.h>
-#include <triangulation/triangulation.h>
 #include <union.h>
+#include <contourize.h>
+#include <intersections.h>
+#include <triangulation.h>
 
 std::vector<Triangle> unionize(const Triangle &t1, const Triangle &t2) {
 
@@ -23,7 +22,7 @@ std::vector<Triangle> unionize(const Triangle &t1, const Triangle &t2) {
 
 	std::vector<Point> contour = contourize(t1, t2, newIntersections);
 
-	return monotoneTriangulate(contour);
+	return triangulate(contour);
 }
 
 void unionize(Triangle soup) {
diff --git a/src/contourize/contourize.cpp b/src/utilities/contourize.cpp
similarity index 96%
rename from src/contourize/contourize.cpp
rename to src/utilities/contourize.cpp
index e33f59d..668b70e 100644
--- a/src/contourize/contourize.cpp
+++ b/src/utilities/contourize.cpp
@@ -1,7 +1,6 @@
-#include <shapes/triangle.h>
 #include <vector>
-#include "contourize.h"
-#include <orientation/orientation.h>
+#include <triangle.h>
+#include <orientation.h>
 
 Triangle clockwiseToCounterclockwise(const Triangle &t) {
     return Triangle(t.points[0], t.points[2], t.points[1], t.depth);
diff --git a/src/intersections/intersections.cpp b/src/utilities/intersections.cpp
similarity index 95%
rename from src/intersections/intersections.cpp
rename to src/utilities/intersections.cpp
index c6b1ec1..8b299f4 100644
--- a/src/intersections/intersections.cpp
+++ b/src/utilities/intersections.cpp
@@ -1,8 +1,7 @@
 #include "intersections.h"
-#include <shapes/edge.h>
-#include <shapes/triangle_edges.h>
-#include <shapes/point.h>
 #include <optional>
+#include <edge.h>
+#include <triangle_edges.h>
 
 
 
diff --git a/src/orientation/orientation.cpp b/src/utilities/orientation.cpp
similarity index 91%
rename from src/orientation/orientation.cpp
rename to src/utilities/orientation.cpp
index ee414a8..14817eb 100644
--- a/src/orientation/orientation.cpp
+++ b/src/utilities/orientation.cpp
@@ -1,5 +1,5 @@
 #include "orientation.h"
-#include <shapes/point.h>
+#include <point.h>
 
 Orientation orientation(const Point &p1, const Point &p2, const Point &p3) {
     int val = (p2.y - p1.y) * (p3.x - p2.x) - (p2.x - p1.x) * (p3.y - p2.y);
diff --git a/src/utilities/triangulation.cpp b/src/utilities/triangulation.cpp
new file mode 100644
index 0000000..186976e
--- /dev/null
+++ b/src/utilities/triangulation.cpp
@@ -0,0 +1,21 @@
+#include "triangulation.h"
+#include <list>
+#include <point.h>
+#include <triangle.h>
+/*
+bool isAnEar(Point point, Triangle triangle, Point start[], Point end[]) {
+
+}
+*/
+
+std::vector<Triangle> triangulate(std::vector<Point> points) {
+    //std::list<Point> polygon = std::list(points);
+    std::vector<Triangle> result;
+
+    for (int i = 0; i < points.size(); i++) {
+
+    }
+
+    return result;
+
+}
\ No newline at end of file
diff --git a/tests/unit_tests/contourize_tests.cpp b/tests/unit_tests/contourize_tests.cpp
index 27e318d..93bda8d 100644
--- a/tests/unit_tests/contourize_tests.cpp
+++ b/tests/unit_tests/contourize_tests.cpp
@@ -1,10 +1,11 @@
-#include "gtest/gtest.h"
-#include <contourize/contourize.h>
-#include <intersections/intersections.h>
+#include <gtest/gtest.h>
+#include <contourize.h>
+#include <triangle.h>
+#include <intersections.h>
 
 TEST(ContourizeTest, TwoTriangles) {
-    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 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);
 
diff --git a/tests/unit_tests/point_in_triangle_tests.cpp b/tests/unit_tests/point_in_triangle_tests.cpp
new file mode 100644
index 0000000..00811db
--- /dev/null
+++ b/tests/unit_tests/point_in_triangle_tests.cpp
@@ -0,0 +1,10 @@
+#include <gtest/gtest.h>
+#include <triangle.h>
+
+TEST(PointInTriangleTests, PointInTriangle) {
+    Triangle t = Triangle({1, 0.5}, {3, 0.2}, {2, 1}, 0);
+    EXPECT_TRUE(t.pointInTriangle({1.96, 0.467}));
+    EXPECT_FALSE(t.pointInTriangle({1.107,0.834}));
+    EXPECT_FALSE(t.pointInTriangle({2.553, 0.823}));
+    EXPECT_FALSE(t.pointInTriangle({1.63, 0.13}));
+}
\ No newline at end of file
diff --git a/tests/unit_tests/simple_triangle_tests.cpp b/tests/unit_tests/simple_triangle_tests.cpp
index 01e759f..f3d4783 100644
--- a/tests/unit_tests/simple_triangle_tests.cpp
+++ b/tests/unit_tests/simple_triangle_tests.cpp
@@ -1,10 +1,10 @@
-#include "gtest/gtest.h"
-#include "../../src/shapes/triangle.h"
-#include "../../src/intersections/intersections.h"
+#include <gtest/gtest.h>
+#include <triangle.h>
+#include <intersections.h>
 
 TEST (TriangleIntersectionTests, TriangleIntersection) {
-    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{2,3}, Point{5,0}, 0);
+    auto t2 = Triangle(Point{3,1}, Point{4,3}, Point{6,1}, 0);
 
     std::vector<Point> results = intersections(t1, t2);
 
diff --git a/tests/unit_tests/triangulation_tests.cpp b/tests/unit_tests/triangulation_tests.cpp
new file mode 100644
index 0000000..a69bf51
--- /dev/null
+++ b/tests/unit_tests/triangulation_tests.cpp
@@ -0,0 +1,12 @@
+#include "gtest/gtest.h"
+#include <shapes/point.h>
+
+
+TEST(TriangulationTests, Page3Example) {
+    std::vector<Point> polygon = {
+        {3,48}, {52, 8}, {99,50}, {138,25},
+         {175, 77}, {131, 72}, {111, 113},
+          {72, 43}, {26, 55}, {29, 100}};
+
+     
+}
\ No newline at end of file
-- 
GitLab