From e4a52432ff624952664af05d62ea46ff62e02464 Mon Sep 17 00:00:00 2001 From: Christophe Riccio Date: Fri, 27 May 2011 10:26:38 +0100 Subject: [PATCH 1/3] Fixed ticket #103: doc typo --- doc/gtxModules.doxy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/gtxModules.doxy b/doc/gtxModules.doxy index 8df24c9c..d585cf8b 100644 --- a/doc/gtxModules.doxy +++ b/doc/gtxModules.doxy @@ -452,7 +452,7 @@ **/ /*! - \defgroup gtx_vector_access GLM_GTX_vector_angle: Vector access + \defgroup gtx_vector_access GLM_GTX_vector_access: Vector access \ingroup gtx \brief Function to set values to vectors From c9b7b712fb39eb8e99e3ac99ea08f289e36c1ba9 Mon Sep 17 00:00:00 2001 From: Christophe Riccio Date: Fri, 27 May 2011 16:34:20 +0100 Subject: [PATCH 2/3] Fixed angle implementation --- glm/gtx/quaternion.inl | 2 +- test/gtc/gtc_quaternion.cpp | 9 +++++---- test/gtx/gtx_quaternion.cpp | 30 ++++++++++++++++++++++++------ 3 files changed, 30 insertions(+), 11 deletions(-) diff --git a/glm/gtx/quaternion.inl b/glm/gtx/quaternion.inl index aaf07171..ec713c8d 100644 --- a/glm/gtx/quaternion.inl +++ b/glm/gtx/quaternion.inl @@ -149,7 +149,7 @@ namespace quaternion detail::tquat const & x ) { - return acos(x.w) * T(2); + return glm::degrees(acos(x.w) * T(2)); } template diff --git a/test/gtc/gtc_quaternion.cpp b/test/gtc/gtc_quaternion.cpp index 00ed0503..7bd07c07 100644 --- a/test/gtc/gtc_quaternion.cpp +++ b/test/gtc/gtc_quaternion.cpp @@ -23,11 +23,12 @@ int test_quat_slerp() { int Error = 0; - glm::quat A(0.0f, glm::vec3(0, 0, 1)); - glm::quat B(90.0f, glm::vec3(0, 0, 1)); + glm::quat A(glm::vec3(0, 0, 1)); + glm::quat B(glm::vec3(0, 1, 0)); glm::quat C = glm::mix(A, B, 0.5f); - - Error += C == glm::quat(45.f, glm::vec3(0, 0, 1)) ? 0 : 1; + glm::quat D(glm::normalize(glm::vec3(0, 1, 1))); + + Error += C == D ? 0 : 1; return Error; } diff --git a/test/gtx/gtx_quaternion.cpp b/test/gtx/gtx_quaternion.cpp index 241f572c..c498a0fb 100644 --- a/test/gtx/gtx_quaternion.cpp +++ b/test/gtx/gtx_quaternion.cpp @@ -11,31 +11,48 @@ #include #include +int test_quat_angleAxis() +{ + int Error = 0; + + glm::quat A = glm::angleAxis(0.0f, glm::vec3(0, 0, 1)); + glm::quat B = glm::angleAxis(90.0f, glm::vec3(0, 0, 1)); + glm::quat C = glm::mix(A, B, 0.5f); + glm::quat D = glm::angleAxis(45.0f, glm::vec3(0, 0, 1)); + + Error += glm::equalEpsilon(C.x, D.x, 0.01f) ? 0 : 1; + Error += glm::equalEpsilon(C.y, D.y, 0.01f) ? 0 : 1; + Error += glm::equalEpsilon(C.z, D.z, 0.01f) ? 0 : 1; + Error += glm::equalEpsilon(C.w, D.w, 0.01f) ? 0 : 1; + + return Error; +} + int test_quat_angle() { int Error = 0; { - glm::quat Q(45.0f, glm::vec3(0, 0, 1)); + glm::quat Q = glm::angleAxis(45.0f, glm::vec3(0, 0, 1)); glm::quat N = glm::normalize(Q); float L = glm::length(N); - Error += L == 1.0f ? 0 : 1; + Error += glm::equalEpsilon(L, 1.0f, 0.01f) ? 0 : 1; float A = glm::angle(N); Error += glm::equalEpsilon(A, 45.0f, 0.01f) ? 0 : 1; } { - glm::quat Q(45.0f, glm::vec3(0, 0, 2)); + glm::quat Q = glm::angleAxis(45.0f, glm::normalize(glm::vec3(0, 1, 1))); glm::quat N = glm::normalize(Q); float L = glm::length(N); - Error += L == 1.0f ? 0 : 1; + Error += glm::equalEpsilon(L, 1.0f, 0.01f) ? 0 : 1; float A = glm::angle(N); Error += glm::equalEpsilon(A, 45.0f, 0.01f) ? 0 : 1; } { - glm::quat Q(45.0f, glm::vec3(1, 2, 3)); + glm::quat Q = glm::angleAxis(45.0f, glm::normalize(glm::vec3(1, 2, 3))); glm::quat N = glm::normalize(Q); float L = glm::length(N); - Error += L == 1.0f ? 0 : 1; + Error += glm::equalEpsilon(L, 1.0f, 0.01f) ? 0 : 1; float A = glm::angle(N); Error += glm::equalEpsilon(A, 45.0f, 0.01f) ? 0 : 1; } @@ -48,6 +65,7 @@ int main() int Error = 0; Error += test_quat_angle(); + Error += test_quat_angleAxis(); return Error; } From daa63fd5cc8de7837e8c9c87a1b24163424156d1 Mon Sep 17 00:00:00 2001 From: Christophe Riccio Date: Fri, 27 May 2011 20:20:52 +0100 Subject: [PATCH 3/3] Updated GTC_type_ptr tests --- test/gtc/gtc_type_ptr.cpp | 46 +++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/test/gtc/gtc_type_ptr.cpp b/test/gtc/gtc_type_ptr.cpp index a6c59760..043e0db8 100644 --- a/test/gtc/gtc_type_ptr.cpp +++ b/test/gtc/gtc_type_ptr.cpp @@ -2,7 +2,7 @@ // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net) /////////////////////////////////////////////////////////////////////////////////////////////////// // Created : 2010-09-16 -// Updated : 2010-09-16 +// Updated : 2011-05-27 // Licence : This source is under MIT licence // File : test/gtc/type_ptr.cpp /////////////////////////////////////////////////////////////////////////////////////////////////// @@ -11,8 +11,31 @@ #include #include -bool test_make_pointer() +int test_make_pointer_mat() { + int Error = 0; + + float ArrayA[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; + int ArrayB[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; + bool ArrayC[] = {true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false}; + + glm::mat2x2 Mat2x2A = glm::make_mat2x2(ArrayA); + glm::mat2x3 Mat2x3A = glm::make_mat2x3(ArrayA); + glm::mat2x4 Mat2x4A = glm::make_mat2x4(ArrayA); + glm::mat3x2 Mat3x2A = glm::make_mat3x2(ArrayA); + glm::mat3x3 Mat3x3A = glm::make_mat3x3(ArrayA); + glm::mat3x4 Mat3x4A = glm::make_mat3x4(ArrayA); + glm::mat4x2 Mat4x2A = glm::make_mat4x2(ArrayA); + glm::mat4x3 Mat4x3A = glm::make_mat4x3(ArrayA); + glm::mat4x4 Mat4x4A = glm::make_mat4x4(ArrayA); + + return Error; +} + +int test_make_pointer_vec() +{ + int Error = 0; + float ArrayA[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; int ArrayB[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; bool ArrayC[] = {true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false}; @@ -29,24 +52,15 @@ bool test_make_pointer() glm::bvec3 Vec3C = glm::make_vec3(ArrayC); glm::bvec4 Vec4C = glm::make_vec4(ArrayC); - glm::mat2x2 Mat2x2A = glm::make_mat2x2(ArrayA); - glm::mat2x3 Mat2x3A = glm::make_mat2x3(ArrayA); - glm::mat2x4 Mat2x4A = glm::make_mat2x4(ArrayA); - glm::mat3x2 Mat3x2A = glm::make_mat3x2(ArrayA); - glm::mat3x3 Mat3x3A = glm::make_mat3x3(ArrayA); - glm::mat3x4 Mat3x4A = glm::make_mat3x4(ArrayA); - glm::mat4x2 Mat4x2A = glm::make_mat4x2(ArrayA); - glm::mat4x3 Mat4x3A = glm::make_mat4x3(ArrayA); - glm::mat4x4 Mat4x4A = glm::make_mat4x4(ArrayA); - - return true; + return Error; } int main() { - int Failed = 0; + int Error = 0; - Failed += test_make_pointer() ? 0 : 1; + Error += test_make_pointer_vec(); + Error += test_make_pointer_mat(); - return Failed; + return Error; }