From 4579799ff60421efa75ec269ecd232f087a9b71b Mon Sep 17 00:00:00 2001 From: Christophe Riccio Date: Fri, 14 Nov 2014 21:05:29 +0100 Subject: [PATCH] Revert "More precision for fastCos and fastSin " --- glm/gtc/constants.hpp | 20 -------------------- glm/gtc/constants.inl | 24 ------------------------ glm/gtx/fast_trigonometry.hpp | 10 +++------- glm/gtx/fast_trigonometry.inl | 33 ++++++--------------------------- 4 files changed, 9 insertions(+), 78 deletions(-) diff --git a/glm/gtc/constants.hpp b/glm/gtc/constants.hpp index a39c9bd1..76fc1eb4 100644 --- a/glm/gtc/constants.hpp +++ b/glm/gtc/constants.hpp @@ -71,11 +71,6 @@ namespace glm template GLM_FUNC_DECL genType pi(); - /// Return pi * 2. - /// @see gtc_constants - template - GLM_FUNC_DECL genType two_pi(); - /// Return square root of pi. /// @see gtc_constants template @@ -86,11 +81,6 @@ namespace glm template GLM_FUNC_DECL genType half_pi(); - /// Return pi / 2 * 3. - /// @see gtc_constants - template - GLM_FUNC_DECL genType three_over_two_pi(); - /// Return pi / 4. /// @see gtc_constants template @@ -101,21 +91,11 @@ namespace glm template GLM_FUNC_DECL genType one_over_pi(); - /// Return 1 / (pi * 2). - /// @see gtc_constants - template - GLM_FUNC_DECL genType one_over_two_pi(); - /// Return 2 / pi. /// @see gtc_constants template GLM_FUNC_DECL genType two_over_pi(); - /// Return 4 / pi. - /// @see gtc_constants - template - GLM_FUNC_DECL genType four_over_pi(); - /// Return 2 / sqrt(pi). /// @see gtc_constants template diff --git a/glm/gtc/constants.inl b/glm/gtc/constants.inl index 076375c7..a9ea0095 100644 --- a/glm/gtc/constants.inl +++ b/glm/gtc/constants.inl @@ -54,12 +54,6 @@ namespace glm return genType(3.14159265358979323846264338327950288); } - template - GLM_FUNC_QUALIFIER genType two_pi() - { - return genType(6.28318530717958647692528676655900576); - } - template GLM_FUNC_QUALIFIER genType root_pi() { @@ -72,12 +66,6 @@ namespace glm return genType(1.57079632679489661923132169163975144); } - template - GLM_FUNC_QUALIFIER genType three_over_two_pi() - { - return genType(4.71238898038468985769396507491925432); - } - template GLM_FUNC_QUALIFIER genType quarter_pi() { @@ -90,24 +78,12 @@ namespace glm return genType(0.318309886183790671537767526745028724); } - template - GLM_FUNC_QUALIFIER genType one_over_two_pi() - { - return genType(0.159154943091895335768883763372514362); - } - template GLM_FUNC_QUALIFIER genType two_over_pi() { return genType(0.636619772367581343075535053490057448); } - template - GLM_FUNC_QUALIFIER genType four_over_pi() - { - return genType(1.273239544735162686151070106980114898); - } - template GLM_FUNC_QUALIFIER genType two_over_root_pi() { diff --git a/glm/gtx/fast_trigonometry.hpp b/glm/gtx/fast_trigonometry.hpp index 17b04cfb..f89a6df6 100644 --- a/glm/gtx/fast_trigonometry.hpp +++ b/glm/gtx/fast_trigonometry.hpp @@ -39,7 +39,6 @@ // Dependency: #include "../glm.hpp" -#include "../gtc/constants.hpp" #if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED)) # pragma message("GLM: GLM_GTX_fast_trigonometry extension included") @@ -50,17 +49,14 @@ namespace glm /// @addtogroup gtx_fast_trigonometry /// @{ - //! Wrap an angle to [0 2pi[ + //! Faster than the common sin function but less accurate. + //! Defined between -2pi and 2pi. //! From GLM_GTX_fast_trigonometry extension. template - GLM_FUNC_DECL T wrapAngle(const T& angle); - - //! Faster than the common sin function but less accurate. - //! From GLM_GTX_fast_trigonometry extension. - template GLM_FUNC_DECL T fastSin(const T& angle); //! Faster than the common cos function but less accurate. + //! Defined between -2pi and 2pi. //! From GLM_GTX_fast_trigonometry extension. template GLM_FUNC_DECL T fastCos(const T& angle); diff --git a/glm/gtx/fast_trigonometry.inl b/glm/gtx/fast_trigonometry.inl index b22487d5..b68e8fd5 100644 --- a/glm/gtx/fast_trigonometry.inl +++ b/glm/gtx/fast_trigonometry.inl @@ -9,45 +9,24 @@ namespace glm { - template - GLM_FUNC_QUALIFIER T wrapAngle(T const & angle) + // sin + template + GLM_FUNC_QUALIFIER T fastSin(T const & x) { - return abs(mod(angle, two_pi())); + return x - ((x * x * x) / T(6)) + ((x * x * x * x * x) / T(120)) - ((x * x * x * x * x * x * x) / T(5040)); } - VECTORIZE_VEC(wrapAngle) - - template - GLM_FUNC_QUALIFIER T cos_52s(T const & x) - { - T const xx(x * x); - return (T(0.9999932946) + xx * (T(-0.4999124376) + xx * (T(0.0414877472) + xx * T(-0.0012712095)))); - } - - VECTORIZE_VEC(cos_52s) + VECTORIZE_VEC(fastSin) // cos template GLM_FUNC_QUALIFIER T fastCos(T const & x) { - T const angle(wrapAngle(x)); - if(angle()) return cos_52s(angle); - if(angle()) return -cos_52s(pi() - angle); - if(angle<(T(3) * half_pi())) return -cos_52s(angle - pi()); - return cos_52s(two_pi() - angle); + return T(1) - (x * x * T(0.5)) + (x * x * x * x * T(0.041666666666)) - (x * x * x * x * x * x * T(0.00138888888888)); } VECTORIZE_VEC(fastCos) - // sin - template - GLM_FUNC_QUALIFIER T fastSin(T const & x) - { - return fastCos(half_pi() - x); - } - - VECTORIZE_VEC(fastSin) - // tan template GLM_FUNC_QUALIFIER T fastTan(T const & x)