• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /// @ref gtx_vector_angle
2 /// @file glm/gtx/vector_angle.hpp
3 ///
4 /// @see core (dependence)
5 /// @see gtx_quaternion (dependence)
6 /// @see gtx_epsilon (dependence)
7 ///
8 /// @defgroup gtx_vector_angle GLM_GTX_vector_angle
9 /// @ingroup gtx
10 ///
11 /// @brief Compute angle between vectors
12 ///
13 /// <glm/gtx/vector_angle.hpp> need to be included to use these functionalities.
14 
15 #pragma once
16 
17 // Dependency:
18 #include "../glm.hpp"
19 #include "../gtc/epsilon.hpp"
20 #include "../gtx/quaternion.hpp"
21 #include "../gtx/rotate_vector.hpp"
22 
23 #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)
24 #	pragma message("GLM: GLM_GTX_vector_angle extension included")
25 #endif
26 
27 namespace glm
28 {
29 	/// @addtogroup gtx_vector_angle
30 	/// @{
31 
32 	//! Returns the absolute angle between two vectors.
33 	//! Parameters need to be normalized.
34 	/// @see gtx_vector_angle extension.
35 	template <typename vecType>
36 	GLM_FUNC_DECL typename vecType::value_type angle(
37 		vecType const & x,
38 		vecType const & y);
39 
40 	//! Returns the oriented angle between two 2d vectors.
41 	//! Parameters need to be normalized.
42 	/// @see gtx_vector_angle extension.
43 	template <typename T, precision P>
44 	GLM_FUNC_DECL T orientedAngle(
45 		tvec2<T, P> const & x,
46 		tvec2<T, P> const & y);
47 
48 	//! Returns the oriented angle between two 3d vectors based from a reference axis.
49 	//! Parameters need to be normalized.
50 	/// @see gtx_vector_angle extension.
51 	template <typename T, precision P>
52 	GLM_FUNC_DECL T orientedAngle(
53 		tvec3<T, P> const & x,
54 		tvec3<T, P> const & y,
55 		tvec3<T, P> const & ref);
56 
57 	/// @}
58 }// namespace glm
59 
60 #include "vector_angle.inl"
61