////////////////////////////////////////////////////////////////////////////////// // OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) ////////////////////////////////////////////////////////////////////////////////// // Created : 2007-09-28 // Updated : 2008-10-07 // Licence : This source is under MIT License // File : glm/gtx/normalize_dot.inl ////////////////////////////////////////////////////////////////////////////////// namespace glm { template <typename genType> GLM_FUNC_QUALIFIER genType normalizeDot ( genType const & x, genType const & y ) { return glm::dot(x, y) * glm::inversesqrt(glm::dot(x, x) * glm::dot(y, y)); } template <typename T, precision P> GLM_FUNC_QUALIFIER T normalizeDot ( detail::tvec2<T, P> const & x, detail::tvec2<T, P> const & y ) { return glm::dot(x, y) * glm::inversesqrt(glm::dot(x, x) * glm::dot(y, y)); } template <typename T, precision P> GLM_FUNC_QUALIFIER T normalizeDot ( detail::tvec3<T, P> const & x, detail::tvec3<T, P> const & y ) { return glm::dot(x, y) * glm::inversesqrt(glm::dot(x, x) * glm::dot(y, y)); } template <typename T, precision P> GLM_FUNC_QUALIFIER T normalizeDot ( detail::tvec4<T, P> const & x, detail::tvec4<T, P> const & y ) { return glm::dot(x, y) * glm::inversesqrt(glm::dot(x, x) * glm::dot(y, y)); } template <typename genType> GLM_FUNC_QUALIFIER genType fastNormalizeDot ( genType const & x, genType const & y ) { return glm::dot(x, y) * fastInverseSqrt(glm::dot(x, x) * glm::dot(y, y)); } template <typename T, precision P> GLM_FUNC_QUALIFIER T fastNormalizeDot ( detail::tvec2<T, P> const & x, detail::tvec2<T, P> const & y ) { return glm::dot(x, y) * fastInverseSqrt(glm::dot(x, x) * glm::dot(y, y)); } template <typename T, precision P> GLM_FUNC_QUALIFIER T fastNormalizeDot ( detail::tvec3<T, P> const & x, detail::tvec3<T, P> const & y ) { return glm::dot(x, y) * fastInverseSqrt(glm::dot(x, x) * glm::dot(y, y)); } template <typename T, precision P> GLM_FUNC_QUALIFIER T fastNormalizeDot ( detail::tvec4<T, P> const & x, detail::tvec4<T, P> const & y ) { return glm::dot(x, y) * fastInverseSqrt(glm::dot(x, x) * glm::dot(y, y)); } }//namespace glm