From 64e7d5345dddd755e361a6fce5a7f58b06a8b546 Mon Sep 17 00:00:00 2001 From: Daniel Adolfsson Date: Tue, 11 Jul 2023 13:37:25 +0200 Subject: 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 --- src/helpers/Vector2D.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/helpers/Vector2D.cpp') 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; +} -- cgit v1.2.3