From 988858145c868d067b45457fcfd5c593a6f3a6aa Mon Sep 17 00:00:00 2001 From: Christophe Riccio Date: Mon, 23 Jul 2018 20:42:38 +0200 Subject: [PATCH] Added intersectLineTriangle tests --- glm/gtx/intersect.inl | 27 -------------------------- test/core/core_force_explicit_ctor.cpp | 5 +++++ test/gtx/gtx_intersect.cpp | 20 +++++++++++++++++++ 3 files changed, 25 insertions(+), 27 deletions(-) diff --git a/glm/gtx/intersect.inl b/glm/gtx/intersect.inl index 0ddb8ccf..8e5adcf2 100644 --- a/glm/gtx/intersect.inl +++ b/glm/gtx/intersect.inl @@ -91,33 +91,6 @@ namespace glm return true; } -/* - typename genType::value_type Epsilon = std::numeric_limits::epsilon(); - if(a < Epsilon && a > -Epsilon) - return false; - - typename genType::value_type f = typename genType::value_type(1.0f) / a; - - genType s = orig - v0; - baryPosition.x = f * glm::dot(s, p); - if(baryPosition.x < typename genType::value_type(0.0f)) - return false; - if(baryPosition.x > typename genType::value_type(1.0f)) - return false; - - genType q = glm::cross(s, e1); - baryPosition.y = f * glm::dot(dir, q); - if(baryPosition.y < typename genType::value_type(0.0f)) - return false; - if(baryPosition.y + baryPosition.x > typename genType::value_type(1.0f)) - return false; - - baryPosition.z = f * glm::dot(e2, q); - - return baryPosition.z >= typename genType::value_type(0.0f); - } -*/ - template GLM_FUNC_QUALIFIER bool intersectLineTriangle ( diff --git a/test/core/core_force_explicit_ctor.cpp b/test/core/core_force_explicit_ctor.cpp index cec2fe98..7af5b79f 100644 --- a/test/core/core_force_explicit_ctor.cpp +++ b/test/core/core_force_explicit_ctor.cpp @@ -7,6 +7,11 @@ int main() { int Error = 0; + glm::ivec4 B(1); + Error += B == glm::ivec4(1) ? 0 : 1; + + //glm::vec4 A = B; + return Error; } diff --git a/test/gtx/gtx_intersect.cpp b/test/gtx/gtx_intersect.cpp index a637dee8..7c6e74e5 100644 --- a/test/gtx/gtx_intersect.cpp +++ b/test/gtx/gtx_intersect.cpp @@ -24,11 +24,31 @@ int test_intersectRayTriangle() return Error; } +int test_intersectLineTriangle() +{ + int Error = 0; + + glm::vec3 const Orig(0, 0, 2); + glm::vec3 const Dir(0, 0, -1); + glm::vec3 const Vert0(0, 0, 0); + glm::vec3 const Vert1(-1, -1, 0); + glm::vec3 const Vert2(1, -1, 0); + glm::vec3 Position(2.0f, 0.0f, 0.0f); + + bool const Result = glm::intersectLineTriangle(Orig, Dir, Vert0, Vert1, Vert2, Position); + + Error += glm::all(glm::epsilonEqual(Position, glm::vec3(0), std::numeric_limits::epsilon())) ? 0 : 1; + Error += Result ? 0 : 1; + + return Error; +} + int main() { int Error = 0; Error += test_intersectRayTriangle(); + Error += test_intersectLineTriangle(); return Error; }