summaryrefslogtreecommitdiff
path: root/src/glm/core/func_trigonometric.hpp
blob: 4626f1e5aa403179f3fb0bee5c1550b77f9a0280 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
///////////////////////////////////////////////////////////////////////////////////////////////////
// OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
///////////////////////////////////////////////////////////////////////////////////////////////////
// Created : 2008-08-01
// Updated : 2008-09-10
// Licence : This source is under MIT License
// File    : glm/core/func_trigonometric.hpp
///////////////////////////////////////////////////////////////////////////////////////////////////

#ifndef glm_core_func_trigonometric
#define glm_core_func_trigonometric

namespace glm
{
	namespace core{
	namespace function{
	//! Define Angle and trigonometry functions 
	//! from Section 8.1 of GLSL 1.30.8 specification. 
	//! Included in glm namespace.
	namespace trigonometric{

	/// \addtogroup core_funcs
	///@{

	//! Converts degrees to radians and returns the result.
    //!
    //! \li <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/radians.xml">GLSL radians man page</a>
    //! \li GLSL 1.30.08 specification, section 8.1	
	template <typename genType> 
	genType radians(genType const & degrees);

	//! Converts radians to degrees and returns the result.
    //!
    //! \li <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/degrees.xml">GLSL degrees man page</a>
    //! \li GLSL 1.30.08 specification, section 8.1	
	template <typename genType> 
	genType degrees(genType const & radians);

	//! The standard trigonometric sine function. 
	//! The values returned by this function will range from [-1, 1].
    //!
    //! \li <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/sin.xml">GLSL sin man page</a>
    //! \li GLSL 1.30.08 specification, section 8.1	
	template <typename genType> 
	genType sin(genType const & angle);

	//! The standard trigonometric cosine function. 
	//! The values returned by this function will range from [-1, 1].
    //!
    //! \li <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/cos.xml">GLSL cos man page</a>
    //! \li GLSL 1.30.08 specification, section 8.1	
	template <typename genType> 
	genType cos(genType const & angle);

	//! The standard trigonometric tangent function.
    //!
    //! \li <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/tan.xml">GLSL tan man page</a>
    //! \li GLSL 1.30.08 specification, section 8.1	
	template <typename genType> 
	genType tan(genType const & angle); 

	//! Arc sine. Returns an angle whose sine is x. 
	//! The range of values returned by this function is [-PI/2, PI/2]. 
	//! Results are undefined if |x| > 1.
    //!
    //! \li <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/asin.xml">GLSL asin man page</a>
    //! \li GLSL 1.30.08 specification, section 8.1	
	template <typename genType> 
	genType asin(genType const & x);

	//! Arc cosine. Returns an angle whose sine is x. 
	//! The range of values returned by this function is [0, PI]. 
	//! Results are undefined if |x| > 1.
    //!
    //! \li <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/acos.xml">GLSL acos man page</a>
    //! \li GLSL 1.30.08 specification, section 8.1	
	template <typename genType> 
	genType acos(genType const & x);

	//! Arc tangent. Returns an angle whose tangent is y/x. 
	//! The signs of x and y are used to determine what 
	//! quadrant the angle is in. The range of values returned 
	//! by this function is [-PI, PI]. Results are undefined 
	//! if x and y are both 0. 
    //!
    //! \li <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/atan.xml">GLSL atan man page</a>
    //! \li GLSL 1.30.08 specification, section 8.1	
	template <typename genType> 
	genType atan(genType const & y, genType const & x);

	//! Arc tangent. Returns an angle whose tangent is y_over_x. 
	//! The range of values returned by this function is [-PI/2, PI/2].
    //!
    //! \li <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/atan.xml">GLSL atan man page</a>
    //! \li GLSL 1.30.08 specification, section 8.1	
	template <typename genType> 
	genType atan(genType const & y_over_x);

	//! Returns the hyperbolic sine function, (exp(x) - exp(-x)) / 2
    //!
    //! \li <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/sinh.xml">GLSL sinh man page</a>
    //! \li GLSL 1.30.08 specification, section 8.1	
	template <typename genType> 
	genType sinh(genType const & angle);

	//! Returns the hyperbolic cosine function, (exp(x) + exp(-x)) / 2
    //!
    //! \li <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/cosh.xml">GLSL cosh man page</a>
    //! \li GLSL 1.30.08 specification, section 8.1	
	template <typename genType> 
	genType cosh(genType const & angle);

	//! Returns the hyperbolic tangent function, sinh(angle) / cosh(angle)
    //!
    //! \li <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/tanh.xml">GLSL tanh man page</a>
    //! \li GLSL 1.30.08 specification, section 8.1	
	template <typename genType> 
	genType tanh(genType const & angle);

	//! Arc hyperbolic sine; returns the inverse of sinh.
    //!
    //! \li <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/asinh.xml">GLSL asinh man page</a>
    //! \li GLSL 1.30.08 specification, section 8.1	
	template <typename genType> 
	genType asinh(genType const & x);
	
	//! Arc hyperbolic cosine; returns the non-negative inverse
	//! of cosh. Results are undefined if x < 1.
    //!
    //! \li <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/acosh.xml">GLSL acosh man page</a>
    //! \li GLSL 1.30.08 specification, section 8.1	
	template <typename genType> 
	genType acosh(genType const & x);

	//! Arc hyperbolic tangent; returns the inverse of tanh.
	//! Results are undefined if abs(x) >= 1.
    //!
    //! \li <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/atanh.xml">GLSL atanh man page</a>
    //! \li GLSL 1.30.08 specification, section 8.1	
	template <typename genType> 
	genType atanh(genType const & x);

	///@}

	}//namespace trigonometric
	}//namespace function
	}//namespace core

	using namespace core::function::trigonometric;
}//namespace glm

#include "func_trigonometric.inl"

#endif//glm_core_func_trigonometric