You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
		
		
		
		
		
			
		
			
				
					
					
						
							88 lines
						
					
					
						
							1.7 KiB
						
					
					
				
			
		
		
	
	
							88 lines
						
					
					
						
							1.7 KiB
						
					
					
				| #include <glm/gtc/constants.hpp> | |
| #include <glm/ext/quaternion_geometric.hpp> | |
| #include <glm/ext/quaternion_float.hpp> | |
| #include <glm/ext/quaternion_trigonometric.hpp> | |
| #include <glm/ext/quaternion_float_precision.hpp> | |
| #include <glm/ext/quaternion_double.hpp> | |
| #include <glm/ext/quaternion_double_precision.hpp> | |
| #include <glm/ext/vector_float3.hpp> | |
| #include <glm/ext/vector_float3_precision.hpp> | |
| #include <glm/ext/vector_double3.hpp> | |
| #include <glm/ext/vector_double3_precision.hpp> | |
| #include <glm/ext/scalar_relational.hpp> | |
|  | |
| float const Epsilon = 0.001f; | |
| 
 | |
| static int test_length() | |
| { | |
| 	int Error = 0; | |
| 
 | |
| 	{ | |
| 		float const A = glm::length(glm::quat(1, 0, 0, 0)); | |
| 		Error += glm::equal(A, 1.0f, Epsilon) ? 0 : 1; | |
| 	} | |
| 
 | |
| 	{ | |
| 		float const A = glm::length(glm::quat(1, glm::vec3(0))); | |
| 		Error += glm::equal(A, 1.0f, Epsilon) ? 0 : 1; | |
| 	} | |
| 
 | |
| 	{ | |
| 		float const A = glm::length(glm::quat(glm::vec3(1, 0, 0), glm::vec3(0, 1, 0))); | |
| 		Error += glm::equal(A, 1.0f, Epsilon) ? 0 : 1; | |
| 	} | |
| 
 | |
| 	return Error; | |
| } | |
| 
 | |
| static int test_normalize() | |
| { | |
| 	int Error = 0; | |
| 
 | |
| 	{ | |
| 		glm::quat const A = glm::quat(1, 0, 0, 0); | |
| 		glm::quat const N = glm::normalize(A); | |
| 		Error += glm::all(glm::equal(A, N, Epsilon)) ? 0 : 1; | |
| 	} | |
| 
 | |
| 	{ | |
| 		glm::quat const A = glm::quat(1, glm::vec3(0)); | |
| 		glm::quat const N = glm::normalize(A); | |
| 		Error += glm::all(glm::equal(A, N, Epsilon)) ? 0 : 1; | |
| 	} | |
| 
 | |
| 	return Error; | |
| } | |
| 
 | |
| static int test_dot() | |
| { | |
| 	int Error = 0; | |
| 
 | |
| 	{ | |
| 		glm::quat const A = glm::quat(1, 0, 0, 0); | |
| 		glm::quat const B = glm::quat(1, 0, 0, 0); | |
| 		float const C = glm::dot(A, B); | |
| 		Error += glm::equal(C, 1.0f, Epsilon) ? 0 : 1; | |
| 	} | |
| 
 | |
| 	return Error; | |
| } | |
| 
 | |
| static int test_cross() | |
| { | |
| 	int Error = 0; | |
| 
 | |
| 	return Error; | |
| } | |
| 
 | |
| int main() | |
| { | |
| 	int Error = 0; | |
| 
 | |
| 	Error += test_length(); | |
| 	Error += test_normalize(); | |
| 	Error += test_dot(); | |
| 	Error += test_cross(); | |
| 
 | |
| 	return Error; | |
| }
 | |
| 
 |