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