2
0
Эх сурвалжийг харах

Added intersectLineTriangle tests

Christophe Riccio 7 жил өмнө
parent
commit
988858145c

+ 0 - 27
glm/gtx/intersect.inl

@@ -91,33 +91,6 @@ namespace glm
 		return true;
 	}
 
-/*
-		typename genType::value_type Epsilon = std::numeric_limits<typename genType::value_type>::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<typename genType>
 	GLM_FUNC_QUALIFIER bool intersectLineTriangle
 	(

+ 5 - 0
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;
 }
 

+ 20 - 0
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<float>::epsilon())) ? 0 : 1;
+	Error += Result ? 0 : 1;
+
+	return Error;
+}
+
 int main()
 {
 	int Error = 0;
 
 	Error += test_intersectRayTriangle();
+	Error += test_intersectLineTriangle();
 
 	return Error;
 }