From b8190d15d90372d1b256379e994c69a533079ffd Mon Sep 17 00:00:00 2001 From: Christophe Riccio Date: Tue, 8 Feb 2011 11:31:09 +0000 Subject: [PATCH 1/2] Updated readme formatting and added a usage section --- doc/CMakeLists.txt | 4 +- readme.txt | 228 ++++++++++++++++++++++++--------------------- 2 files changed, 125 insertions(+), 107 deletions(-) diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 6d9f918b..da40c39e 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -1,10 +1,12 @@ set(NAME glm-doc) +file(GLOB ROOT_TXT doxyfile ../*.txt) file(GLOB ROOT_CPP src/*.cpp) file(GLOB ROOT_XML src/*.xml) file(GLOB ROOT_XSL src/*.xsl) +source_group("TXT Files" FILES ${ROOT_TXT}) source_group("XML Files" FILES ${ROOT_XML}) source_group("XSL Files" FILES ${ROOT_XSL}) -add_executable(${NAME} ${ROOT_CPP} ${ROOT_XML} ${ROOT_XSL}) +add_executable(${NAME} ${ROOT_CPP} ${ROOT_XML} ${ROOT_XSL} ${ROOT_TXT}) diff --git a/readme.txt b/readme.txt index 785b30ac..1402a731 100644 --- a/readme.txt +++ b/readme.txt @@ -1,311 +1,327 @@ -============================= +================================================================================ G-Truc Creation ------------------------------ +-------------------------------------------------------------------------------- www.g-truc.net glm@g-truc.net -============================= +================================================================================ +GLM Usage +-------------------------------------------------------------------------------- +GLM is a header only library, there is nothing to build, just include it. +#include + +More informations in GLM manual: +http://glm.g-truc.net/glm-manual.pdf + +================================================================================ +GLM 0.9.0.7: 2011-01-30 +-------------------------------------------------------------------------------- +- Added GLSL 4.10 packing functions +- Added == and != operators for every types. + +================================================================================ GLM 0.9.0.6: 2010-12-21 ------------------------------ +-------------------------------------------------------------------------------- - Many matrices bugs fixed -============================= +================================================================================ GLM 0.9.0.5: 2010-11-01 ------------------------------ +-------------------------------------------------------------------------------- - Improved Clang support - Fixed bugs -============================= +================================================================================ GLM 0.9.0.4: 2010-10-04 ------------------------------ +-------------------------------------------------------------------------------- - Added autoexp for GLM - Fixed bugs -============================= +================================================================================ GLM 0.9.0.3: 2010-08-26 ------------------------------ +-------------------------------------------------------------------------------- - Fixed non-squared matrix operators -============================= +================================================================================ GLM 0.9.0.2: 2010-07-08 ------------------------------ +-------------------------------------------------------------------------------- - Added GLM_GTX_int_10_10_10_2 - Fixed bugs -============================= +================================================================================ GLM 0.9.0.1: 2010-06-21 ------------------------------ +-------------------------------------------------------------------------------- - Fixed extensions errors -============================= +================================================================================ GLM 0.9.0.0: 2010-05-25 ------------------------------ +-------------------------------------------------------------------------------- - Objective-C support - Fixed warnings - Updated documentation -============================= +================================================================================ GLM 0.9.B.2: 2010-04-30 ------------------------------ +-------------------------------------------------------------------------------- - Git transition - Removed experimental code from releases - Fixed bugs -============================= +================================================================================ GLM 0.9.B.1: 2010-04-03 ------------------------------ +-------------------------------------------------------------------------------- - Based on GLSL 4.00 specification - Added the new core functions - Added some implicit conversion support -============================= +================================================================================ GLM 0.9.A.2: 2010-02-20 ------------------------------ +-------------------------------------------------------------------------------- - Improved some possible errors messages - Improved declarations and definitions match -============================= +================================================================================ GLM 0.9.A.1: 2010-02-09 ------------------------------ +-------------------------------------------------------------------------------- - Removed deprecated features - Internal redesign -============================= +================================================================================ GLM 0.8.4.4 final: 2010-01-25 ------------------------------ +-------------------------------------------------------------------------------- - Fixed warnings -============================= +================================================================================ GLM 0.8.4.3 final: 2009-11-16 ------------------------------ +-------------------------------------------------------------------------------- - Fixed Half float arithmetic - Fixed setup defines -============================= +================================================================================ GLM 0.8.4.2 final: 2009-10-19 ------------------------------ +-------------------------------------------------------------------------------- - Fixed Half float adds -============================= +================================================================================ GLM 0.8.4.1 final: 2009-10-05 ------------------------------ +-------------------------------------------------------------------------------- - Updated documentation - Fixed MacOS X build -============================= +================================================================================ GLM 0.8.4.0 final: 2009-09-16 ------------------------------ +-------------------------------------------------------------------------------- - Added GCC 4.4 and VC2010 support - Added matrix optimizations -============================= +================================================================================ GLM 0.8.3.5 final: 2009-08-11 ------------------------------ +-------------------------------------------------------------------------------- - Fixed bugs -============================= +================================================================================ GLM 0.8.3.4 final: 2009-08-10 ------------------------------ +-------------------------------------------------------------------------------- - Updated GLM according GLSL 1.5 spec - Fixed bugs -============================= +================================================================================ GLM 0.8.3.3 final: 2009-06-25 ------------------------------ +-------------------------------------------------------------------------------- - Fixed bugs -============================= +================================================================================ GLM 0.8.3.2 final: 2009-06-04 ------------------------------ +-------------------------------------------------------------------------------- - Added GLM_GTC_quaternion - Added GLM_GTC_type_precision -============================= +================================================================================ GLM 0.8.3.1 final: 2009-05-21 ------------------------------ +-------------------------------------------------------------------------------- - Fixed old extension system. -============================= +================================================================================ GLM 0.8.3.0 final: 2009-05-06 ------------------------------ +-------------------------------------------------------------------------------- - Added stable extensions. - Added new extension system. -============================= +================================================================================ GLM 0.8.2.3 final: 2009-04-01 ------------------------------ +-------------------------------------------------------------------------------- - Fixed bugs. -============================= +================================================================================ GLM 0.8.2.2 final: 2009-02-24 ------------------------------ +-------------------------------------------------------------------------------- - Fixed bugs. -============================= +================================================================================ GLM 0.8.2.1 final: 2009-02-13 ------------------------------ +-------------------------------------------------------------------------------- - Fixed bugs. -============================= +================================================================================ GLM 0.8.2 final: 2009-01-21 ------------------------------ +-------------------------------------------------------------------------------- - Fixed bugs. -============================= +================================================================================ GLM 0.8.1 final: 2008-10-30 ------------------------------ +-------------------------------------------------------------------------------- - Fixed bugs. -============================= +================================================================================ GLM 0.8.0 final: 2008-10-23 ------------------------------ +-------------------------------------------------------------------------------- - New method to use extension. -============================= +================================================================================ GLM 0.8.0 beta3: 2008-10-10 ------------------------------ +-------------------------------------------------------------------------------- - Added CMake support for GLM tests. -============================= +================================================================================ GLM 0.8.0 beta2: 2008-10-04 ------------------------------ +-------------------------------------------------------------------------------- - Improved half scalars and vectors support. -============================= +================================================================================ GLM 0.8.0 beta1: 2008-09-26 ------------------------------ +-------------------------------------------------------------------------------- - Improved GLSL conformance - Added GLSL 1.30 support - Improved API documentation -============================= +================================================================================ GLM 0.7.6 final: 2008-08-08 ---------------------------- +-------------------------------------------------------------------------------- - Improved C++ standard comformance - Added Static assert for types checking -=========================== +================================================================================ GLM 0.7.5 final: 2008-07-05 ---------------------------- +-------------------------------------------------------------------------------- - Added build message system with Visual Studio - Pedantic build with GCC -=========================== +================================================================================ GLM 0.7.4 final: 2008-06-01 ---------------------------- +-------------------------------------------------------------------------------- - Added external dependencies system. -=========================== +================================================================================ GLM 0.7.3 final: 2008-05-24 ---------------------------- +-------------------------------------------------------------------------------- - Fixed bugs - Added new extension group -=========================== +================================================================================ GLM 0.7.2 final: 2008-04-27 ---------------------------- +-------------------------------------------------------------------------------- - Updated documentation - Added preprocessor options -=========================== +================================================================================ GLM 0.7.1 final: 2008-03-24 ---------------------------- +-------------------------------------------------------------------------------- - Disabled half on GCC - Fixed extensions -=========================== +================================================================================ GLM 0.7.0 final: 2008-03-22 ---------------------------- +-------------------------------------------------------------------------------- - Changed to MIT license - Added new documentation -=========================== +================================================================================ GLM 0.6.4 : 2007-12-10 ---------------------------- +-------------------------------------------------------------------------------- - Fixed swizzle operators -=========================== +================================================================================ GLM 0.6.3 : 2007-11-05 ---------------------------- +-------------------------------------------------------------------------------- - Fixed type data accesses - Fixed 3DSMax sdk conflict -=========================== +================================================================================ GLM 0.6.2 : 2007-10-08 ---------------------------- +-------------------------------------------------------------------------------- - Fixed extension -=========================== +================================================================================ GLM 0.6.1 : 2007-10-07 ---------------------------- +-------------------------------------------------------------------------------- - Fixed a namespace error - Added extensions -=========================== +================================================================================ GLM 0.6.0 : 2007-09-16 ---------------------------- +-------------------------------------------------------------------------------- - Added new extension namespace mecanium - Added Automatic compiler detection -=========================== +================================================================================ GLM 0.5.1 : 2007-02-19 ---------------------------- +-------------------------------------------------------------------------------- - Fixed swizzle operators -=========================== +================================================================================ GLM 0.5.0 : 2007-01-06 ---------------------------- +-------------------------------------------------------------------------------- - Upgrated to GLSL 1.2 - Added swizzle operators - Added setup settings -=========================== +================================================================================ GLM 0.4.1 : 2006-05-22 ---------------------------- +-------------------------------------------------------------------------------- - Added OpenGL examples -=========================== +================================================================================ GLM 0.4.0 : 2006-05-17 ---------------------------- +-------------------------------------------------------------------------------- - Added missing operators to vec* and mat* - Added first GLSL 1.2 features - Fixed windows.h before glm.h when windows.h required -=========================== +================================================================================ GLM 0.3.2 : 2006-04-21 ---------------------------- +-------------------------------------------------------------------------------- - Fixed texcoord components access. - Fixed mat4 and imat4 division operators. -=========================== +================================================================================ GLM 0.3.1 : 2006-03-28 ---------------------------- +-------------------------------------------------------------------------------- - Added GCC 4.0 support under MacOS X. - Added GCC 4.0 and 4.1 support under Linux. - Added code optimisations. -=========================== +================================================================================ GLM 0.3 : 2006-02-19 ---------------------------- +-------------------------------------------------------------------------------- - Improved GLSL type conversion and construction compliance. - Added experimental extensions. - Added Doxygen Documentation. - Added code optimisations. - Fixed bugs. -=========================== +================================================================================ GLM 0.2: 2005-05-05 ---------------------------- +-------------------------------------------------------------------------------- - Improve adaptative from GLSL. - Add experimental extensions based on OpenGL extension process. - Fixe bugs. -=========================== +================================================================================ GLM 0.1: 2005-02-21 ---------------------------- +-------------------------------------------------------------------------------- - Add vec2, vec3, vec4 GLSL types - Add ivec2, ivec3, ivec4 GLSL types - Add bvec2, bvec3, bvec4 GLSL types - Add mat2, mat3, mat4 GLSL types - Add almost all functions +================================================================================ From 75af4af7897af7b04128f459b54091078e3ced31 Mon Sep 17 00:00:00 2001 From: Christophe Riccio Date: Tue, 8 Feb 2011 11:59:00 +0000 Subject: [PATCH 2/2] Added alternative implementation of SLERP --- glm/gtc/quaternion.hpp | 2 +- glm/gtc/quaternion.inl | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/glm/gtc/quaternion.hpp b/glm/gtc/quaternion.hpp index c70b1cde..0875efe9 100644 --- a/glm/gtc/quaternion.hpp +++ b/glm/gtc/quaternion.hpp @@ -148,7 +148,7 @@ namespace glm detail::tquat const & q1, detail::tquat const & q2); - //! Returns a LERP interpolated quaternion of x and y according a. + //! Returns a SLERP interpolated quaternion of x and y according a. //! From GLM_GTC_quaternion extension. template detail::tquat mix( diff --git a/glm/gtc/quaternion.inl b/glm/gtc/quaternion.inl index a445c182..32577b77 100644 --- a/glm/gtc/quaternion.inl +++ b/glm/gtc/quaternion.inl @@ -369,6 +369,43 @@ namespace quaternion{ k0 * x.z + k1 * y2.z); } + template + inline detail::tquat mix2 + ( + detail::tquat const & x, + detail::tquat const & y, + T const & a + ) + { + bool flip = false; + if(a <= T(0)) return x; + if(a >= T(1)) return y; + + T cos_t = dot(x, y); + if(cos_t < T(0)) + { + cos_t = -cos_t; + flip = true; + } + + T alpha(0), beta(0); + + if(T(1) - cos_t < 1e-7) + beta = T(1) - alpha; + else + { + T theta = acos(cos_t); + T sin_t = sin(theta); + beta = sin(theta * (T(1) - alpha)) / sin_t; + alpha = sin(alpha * theta) / sin_t; + } + + if(flip) + alpha = -alpha; + + return normalize(beta * x + alpha * y2); + } + template inline detail::tquat conjugate (