summaryrefslogtreecommitdiff
path: root/src/helpers/Vector2D.cpp
diff options
context:
space:
mode:
authorDaniel Adolfsson <daniel@ashen.se>2023-07-11 13:37:25 +0200
committerGitHub <noreply@github.com>2023-07-11 13:37:25 +0200
commit64e7d5345dddd755e361a6fce5a7f58b06a8b546 (patch)
tree4bdc0effcc9c6de0322ffbf39c587e3ed5854dab /src/helpers/Vector2D.cpp
parent29d017f54bc4b41ec402e6ac91d4857b8305483a (diff)
Add support for smart splitting (#2676)
* Add support for smart splitting * clang-format * smart_split default to 0, and make smart_split behave like preserve_split
Diffstat (limited to 'src/helpers/Vector2D.cpp')
-rw-r--r--src/helpers/Vector2D.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/helpers/Vector2D.cpp b/src/helpers/Vector2D.cpp
index 21701c97..118ba9d9 100644
--- a/src/helpers/Vector2D.cpp
+++ b/src/helpers/Vector2D.cpp
@@ -37,3 +37,11 @@ double Vector2D::distance(const Vector2D& other) const {
double dy = y - other.y;
return std::sqrt(dx * dx + dy * dy);
}
+
+bool Vector2D::inTriangle(const Vector2D& p1, const Vector2D& p2, const Vector2D& p3) const {
+ const auto a = ((p2.y - p3.y) * (x - p3.x) + (p3.x - p2.x) * (y - p3.y)) / ((p2.y - p3.y) * (p1.x - p3.x) + (p3.x - p2.x) * (p1.y - p3.y));
+ const auto b = ((p3.y - p1.y) * (x - p3.x) + (p1.x - p3.x) * (y - p3.y)) / ((p2.y - p3.y) * (p1.x - p3.x) + (p3.x - p2.x) * (p1.y - p3.y));
+ const auto c = 1 - a - b;
+
+ return 0 <= a && a <= 1 && 0 <= b && b <= 1 && 0 <= c && c <= 1;
+}