From 559946f2fcb276741ccc8e9196a8ce877d9f4d21 Mon Sep 17 00:00:00 2001 From: Darafei Praliaskouski Date: Sat, 11 May 2013 19:34:50 +0300 Subject: [PATCH] [geometry] add IsPointInsideTriangle implementation --- geometry/point2d.hpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/geometry/point2d.hpp b/geometry/point2d.hpp index 5eac29a852..fe00af121f 100644 --- a/geometry/point2d.hpp +++ b/geometry/point2d.hpp @@ -199,6 +199,16 @@ namespace m2 return res; } + template + bool IsPointInsideTriangle(Point const & p, + Point const & a, Point const & b, Point const & c) + { + T const cpab = CrossProduct(b - a, p - a); + T const cpbc = CrossProduct(c - b, p - b); + T const cpca = CrossProduct(a - c, p - c); + return (cpab <= 0 && cpbc <= 0 && cpca <= 0) || (cpab >= 0 && cpbc >= 0 && cpca >= 0); + } + template bool IsPointStrictlyInsideTriangle(Point const & p, Point const & a, Point const & b, Point const & c)