From 666373ef6fd4d6f58d66342885ca06e0d1369c5f Mon Sep 17 00:00:00 2001 From: Karsten Rink <karsten.rink@ufz.de> Date: Wed, 15 Oct 2014 11:13:55 +0200 Subject: [PATCH] adjusted tests --- Tests/GeoLib/TestIsPointInTriangle.cpp | 48 ++++++++++++++++++-------- 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/Tests/GeoLib/TestIsPointInTriangle.cpp b/Tests/GeoLib/TestIsPointInTriangle.cpp index b76740125c3..ab1e9378216 100644 --- a/Tests/GeoLib/TestIsPointInTriangle.cpp +++ b/Tests/GeoLib/TestIsPointInTriangle.cpp @@ -19,42 +19,60 @@ TEST(GeoLib, IsPointInTriangle) GeoLib::Point const b(100.0, 0.0, 0.0); GeoLib::Point const c(0.0, 100.0, 0.0); + double const default_eps (std::numeric_limits<double>::epsilon()); + // check point on corner points of triangle GeoLib::Point q(a); - EXPECT_TRUE(GeoLib::isPointInTriangle2(q, a, b, c)); + EXPECT_TRUE(GeoLib::gaussPointInTriangle(q, a, b, c)); + EXPECT_TRUE(GeoLib::barycentricPointInTriangle(q, a, b, c)); q = b; - EXPECT_TRUE(GeoLib::isPointInTriangle2(q, a, b, c)); + EXPECT_TRUE(GeoLib::gaussPointInTriangle(q, a, b, c)); + EXPECT_TRUE(GeoLib::barycentricPointInTriangle(q, a, b, c)); q = c; - EXPECT_TRUE(GeoLib::isPointInTriangle2(q, a, b, c)); + EXPECT_TRUE(GeoLib::gaussPointInTriangle(q, a, b, c)); + EXPECT_TRUE(GeoLib::barycentricPointInTriangle(q, a, b, c)); // check points on edges of triangle q = GeoLib::Point(0.5*(b[0]+a[0]), 0.5*(b[1]+a[1]), 0.5*(b[2]+a[2])); - EXPECT_TRUE(GeoLib::isPointInTriangle2(q, a, b, c)); + EXPECT_TRUE(GeoLib::gaussPointInTriangle(q, a, b, c)); + EXPECT_TRUE(GeoLib::barycentricPointInTriangle(q, a, b, c)); q = GeoLib::Point(0.5*(c[0]+a[0]), 0.5*(c[1]+a[1]), 0.5*(c[2]+a[2])); - EXPECT_TRUE(GeoLib::isPointInTriangle2(q, a, b, c)); + EXPECT_TRUE(GeoLib::gaussPointInTriangle(q, a, b, c)); + EXPECT_TRUE(GeoLib::barycentricPointInTriangle(q, a, b, c)); q = GeoLib::Point(0.5*(c[0]+b[0]), 0.5*(c[1]+b[1]), 0.5*(c[2]+b[2])); - EXPECT_TRUE(GeoLib::isPointInTriangle2(q, a, b, c)); + EXPECT_TRUE(GeoLib::gaussPointInTriangle(q, a, b, c)); + EXPECT_TRUE(GeoLib::barycentricPointInTriangle(q, a, b, c)); // check points inside q = GeoLib::Point (0.1, 0.1, 0.0); - EXPECT_TRUE(GeoLib::isPointInTriangle2(q, a, b, c)); + EXPECT_TRUE(GeoLib::gaussPointInTriangle(q, a, b, c)); + EXPECT_TRUE(GeoLib::barycentricPointInTriangle(q, a, b, c)); q = GeoLib::Point (0.1, 0.1, 1e-10); - EXPECT_TRUE(GeoLib::isPointInTriangle2(q, a, b, c, 1e-5)); + EXPECT_TRUE(GeoLib::gaussPointInTriangle(q, a, b, c)); + // here is a higher eps value needed for the second algorithm + EXPECT_TRUE(GeoLib::barycentricPointInTriangle(q, a, b, c, 1e-5)); // check points outside q = GeoLib::Point (-0.1, 0.1, 0.0); - EXPECT_FALSE(GeoLib::isPointInTriangle2(q, a, b, c)); + EXPECT_FALSE(GeoLib::gaussPointInTriangle(q, a, b, c)); + EXPECT_FALSE(GeoLib::barycentricPointInTriangle(q, a, b, c)); q = GeoLib::Point (0.1, 0.1, 0.0005); - EXPECT_FALSE(GeoLib::isPointInTriangle2(q, a, b, c)); // default eps from float + EXPECT_FALSE(GeoLib::gaussPointInTriangle(q, a, b, c)); + EXPECT_FALSE(GeoLib::barycentricPointInTriangle(q, a, b, c)); q = GeoLib::Point (0.1, 0.1, 0.0001); - EXPECT_FALSE(GeoLib::isPointInTriangle2(q, a, b, c, std::numeric_limits<double>::epsilon())); + EXPECT_FALSE(GeoLib::gaussPointInTriangle(q, a, b, c, std::numeric_limits<double>::epsilon())); + EXPECT_FALSE(GeoLib::barycentricPointInTriangle(q, a, b, c, std::numeric_limits<double>::epsilon())); q = GeoLib::Point (0.1, 0.1, 0.000001); - EXPECT_FALSE(GeoLib::isPointInTriangle2(q, a, b, c, std::numeric_limits<double>::epsilon())); + EXPECT_FALSE(GeoLib::gaussPointInTriangle(q, a, b, c, std::numeric_limits<double>::epsilon())); + EXPECT_FALSE(GeoLib::barycentricPointInTriangle(q, a, b, c, std::numeric_limits<double>::epsilon())); q = GeoLib::Point (0.1, 0.1, 1e-7); - EXPECT_FALSE(GeoLib::isPointInTriangle2(q, a, b, c, std::numeric_limits<double>::epsilon())); + EXPECT_FALSE(GeoLib::gaussPointInTriangle(q, a, b, c, std::numeric_limits<double>::epsilon())); + EXPECT_FALSE(GeoLib::barycentricPointInTriangle(q, a, b, c, std::numeric_limits<double>::epsilon())); q = GeoLib::Point (0.1, 0.1, 0.001); - EXPECT_FALSE(GeoLib::isPointInTriangle2(q, a, b, c)); + EXPECT_FALSE(GeoLib::gaussPointInTriangle(q, a, b, c)); + EXPECT_FALSE(GeoLib::barycentricPointInTriangle(q, a, b, c)); q = GeoLib::Point (0.1, 0.1, 0.1); - EXPECT_FALSE(GeoLib::isPointInTriangle2(q, a, b, c)); + EXPECT_FALSE(GeoLib::gaussPointInTriangle(q, a, b, c)); + EXPECT_FALSE(GeoLib::barycentricPointInTriangle(q, a, b, c)); } -- GitLab