mirror of
https://github.com/g-truc/glm.git
synced 2024-11-25 18:04:34 +00:00
Merge pull request #268 from g-truc/revert-264-fast_trigonometry
Revert "More precision for fastCos and fastSin "
This commit is contained in:
commit
5ad706ec75
@ -71,11 +71,6 @@ namespace glm
|
|||||||
template <typename genType>
|
template <typename genType>
|
||||||
GLM_FUNC_DECL genType pi();
|
GLM_FUNC_DECL genType pi();
|
||||||
|
|
||||||
/// Return pi * 2.
|
|
||||||
/// @see gtc_constants
|
|
||||||
template <typename genType>
|
|
||||||
GLM_FUNC_DECL genType two_pi();
|
|
||||||
|
|
||||||
/// Return square root of pi.
|
/// Return square root of pi.
|
||||||
/// @see gtc_constants
|
/// @see gtc_constants
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
@ -86,11 +81,6 @@ namespace glm
|
|||||||
template <typename genType>
|
template <typename genType>
|
||||||
GLM_FUNC_DECL genType half_pi();
|
GLM_FUNC_DECL genType half_pi();
|
||||||
|
|
||||||
/// Return pi / 2 * 3.
|
|
||||||
/// @see gtc_constants
|
|
||||||
template <typename genType>
|
|
||||||
GLM_FUNC_DECL genType three_over_two_pi();
|
|
||||||
|
|
||||||
/// Return pi / 4.
|
/// Return pi / 4.
|
||||||
/// @see gtc_constants
|
/// @see gtc_constants
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
@ -101,21 +91,11 @@ namespace glm
|
|||||||
template <typename genType>
|
template <typename genType>
|
||||||
GLM_FUNC_DECL genType one_over_pi();
|
GLM_FUNC_DECL genType one_over_pi();
|
||||||
|
|
||||||
/// Return 1 / (pi * 2).
|
|
||||||
/// @see gtc_constants
|
|
||||||
template <typename genType>
|
|
||||||
GLM_FUNC_DECL genType one_over_two_pi();
|
|
||||||
|
|
||||||
/// Return 2 / pi.
|
/// Return 2 / pi.
|
||||||
/// @see gtc_constants
|
/// @see gtc_constants
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
GLM_FUNC_DECL genType two_over_pi();
|
GLM_FUNC_DECL genType two_over_pi();
|
||||||
|
|
||||||
/// Return 4 / pi.
|
|
||||||
/// @see gtc_constants
|
|
||||||
template <typename genType>
|
|
||||||
GLM_FUNC_DECL genType four_over_pi();
|
|
||||||
|
|
||||||
/// Return 2 / sqrt(pi).
|
/// Return 2 / sqrt(pi).
|
||||||
/// @see gtc_constants
|
/// @see gtc_constants
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
|
@ -54,12 +54,6 @@ namespace glm
|
|||||||
return genType(3.14159265358979323846264338327950288);
|
return genType(3.14159265358979323846264338327950288);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename genType>
|
|
||||||
GLM_FUNC_QUALIFIER genType two_pi()
|
|
||||||
{
|
|
||||||
return genType(6.28318530717958647692528676655900576);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
GLM_FUNC_QUALIFIER genType root_pi()
|
GLM_FUNC_QUALIFIER genType root_pi()
|
||||||
{
|
{
|
||||||
@ -72,12 +66,6 @@ namespace glm
|
|||||||
return genType(1.57079632679489661923132169163975144);
|
return genType(1.57079632679489661923132169163975144);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename genType>
|
|
||||||
GLM_FUNC_QUALIFIER genType three_over_two_pi()
|
|
||||||
{
|
|
||||||
return genType(4.71238898038468985769396507491925432);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
GLM_FUNC_QUALIFIER genType quarter_pi()
|
GLM_FUNC_QUALIFIER genType quarter_pi()
|
||||||
{
|
{
|
||||||
@ -90,24 +78,12 @@ namespace glm
|
|||||||
return genType(0.318309886183790671537767526745028724);
|
return genType(0.318309886183790671537767526745028724);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename genType>
|
|
||||||
GLM_FUNC_QUALIFIER genType one_over_two_pi()
|
|
||||||
{
|
|
||||||
return genType(0.159154943091895335768883763372514362);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
GLM_FUNC_QUALIFIER genType two_over_pi()
|
GLM_FUNC_QUALIFIER genType two_over_pi()
|
||||||
{
|
{
|
||||||
return genType(0.636619772367581343075535053490057448);
|
return genType(0.636619772367581343075535053490057448);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename genType>
|
|
||||||
GLM_FUNC_QUALIFIER genType four_over_pi()
|
|
||||||
{
|
|
||||||
return genType(1.273239544735162686151070106980114898);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename genType>
|
template <typename genType>
|
||||||
GLM_FUNC_QUALIFIER genType two_over_root_pi()
|
GLM_FUNC_QUALIFIER genType two_over_root_pi()
|
||||||
{
|
{
|
||||||
|
@ -39,7 +39,6 @@
|
|||||||
|
|
||||||
// Dependency:
|
// Dependency:
|
||||||
#include "../glm.hpp"
|
#include "../glm.hpp"
|
||||||
#include "../gtc/constants.hpp"
|
|
||||||
|
|
||||||
#if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
|
#if(defined(GLM_MESSAGES) && !defined(GLM_EXT_INCLUDED))
|
||||||
# pragma message("GLM: GLM_GTX_fast_trigonometry extension included")
|
# pragma message("GLM: GLM_GTX_fast_trigonometry extension included")
|
||||||
@ -50,17 +49,14 @@ namespace glm
|
|||||||
/// @addtogroup gtx_fast_trigonometry
|
/// @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.
|
//! From GLM_GTX_fast_trigonometry extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
GLM_FUNC_DECL T wrapAngle(const T& angle);
|
|
||||||
|
|
||||||
//! Faster than the common sin function but less accurate.
|
|
||||||
//! From GLM_GTX_fast_trigonometry extension.
|
|
||||||
template <typename T>
|
|
||||||
GLM_FUNC_DECL T fastSin(const T& angle);
|
GLM_FUNC_DECL T fastSin(const T& angle);
|
||||||
|
|
||||||
//! Faster than the common cos function but less accurate.
|
//! Faster than the common cos function but less accurate.
|
||||||
|
//! Defined between -2pi and 2pi.
|
||||||
//! From GLM_GTX_fast_trigonometry extension.
|
//! From GLM_GTX_fast_trigonometry extension.
|
||||||
template <typename T>
|
template <typename T>
|
||||||
GLM_FUNC_DECL T fastCos(const T& angle);
|
GLM_FUNC_DECL T fastCos(const T& angle);
|
||||||
|
@ -9,45 +9,24 @@
|
|||||||
|
|
||||||
namespace glm
|
namespace glm
|
||||||
{
|
{
|
||||||
template <typename T>
|
// sin
|
||||||
GLM_FUNC_QUALIFIER T wrapAngle(T const & angle)
|
template <typename T>
|
||||||
|
GLM_FUNC_QUALIFIER T fastSin(T const & x)
|
||||||
{
|
{
|
||||||
return abs<T>(mod<T>(angle, two_pi<T>()));
|
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)
|
VECTORIZE_VEC(fastSin)
|
||||||
|
|
||||||
template <typename T>
|
|
||||||
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)
|
|
||||||
|
|
||||||
// cos
|
// cos
|
||||||
template <typename T>
|
template <typename T>
|
||||||
GLM_FUNC_QUALIFIER T fastCos(T const & x)
|
GLM_FUNC_QUALIFIER T fastCos(T const & x)
|
||||||
{
|
{
|
||||||
T const angle(wrapAngle<T>(x));
|
return T(1) - (x * x * T(0.5)) + (x * x * x * x * T(0.041666666666)) - (x * x * x * x * x * x * T(0.00138888888888));
|
||||||
if(angle<half_pi<T>()) return cos_52s(angle);
|
|
||||||
if(angle<pi<T>()) return -cos_52s(pi<T>() - angle);
|
|
||||||
if(angle<(T(3) * half_pi<T>())) return -cos_52s(angle - pi<T>());
|
|
||||||
return cos_52s(two_pi<T>() - angle);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
VECTORIZE_VEC(fastCos)
|
VECTORIZE_VEC(fastCos)
|
||||||
|
|
||||||
// sin
|
|
||||||
template <typename T>
|
|
||||||
GLM_FUNC_QUALIFIER T fastSin(T const & x)
|
|
||||||
{
|
|
||||||
return fastCos<T>(half_pi<T>() - x);
|
|
||||||
}
|
|
||||||
|
|
||||||
VECTORIZE_VEC(fastSin)
|
|
||||||
|
|
||||||
// tan
|
// tan
|
||||||
template <typename T>
|
template <typename T>
|
||||||
GLM_FUNC_QUALIFIER T fastTan(T const & x)
|
GLM_FUNC_QUALIFIER T fastTan(T const & x)
|
||||||
|
Loading…
Reference in New Issue
Block a user