Fixed missing vec1 overload to length2 and distance2 functions #431
This commit is contained in:
parent
39e63661a6
commit
bfb64e7657
@ -55,31 +55,18 @@ namespace glm
|
||||
/// @addtogroup gtx_norm
|
||||
/// @{
|
||||
|
||||
//! Returns the squared length of x.
|
||||
//! From GLM_GTX_norm extension.
|
||||
template <typename T>
|
||||
/// Returns the squared length of x.
|
||||
/// From GLM_GTX_norm extension.
|
||||
template <typename T, precision P, template <typename, precision> class vecType>
|
||||
GLM_FUNC_DECL T length2(
|
||||
T const & x);
|
||||
vecType<T, P> const & x);
|
||||
|
||||
//! Returns the squared length of x.
|
||||
//! From GLM_GTX_norm extension.
|
||||
template <typename genType>
|
||||
GLM_FUNC_DECL typename genType::value_type length2(
|
||||
genType const & x);
|
||||
|
||||
//! Returns the squared distance between p0 and p1, i.e., length2(p0 - p1).
|
||||
//! From GLM_GTX_norm extension.
|
||||
template <typename T>
|
||||
/// Returns the squared distance between p0 and p1, i.e., length2(p0 - p1).
|
||||
/// From GLM_GTX_norm extension.
|
||||
template <typename T, precision P, template <typename, precision> class vecType>
|
||||
GLM_FUNC_DECL T distance2(
|
||||
T const & p0,
|
||||
T const & p1);
|
||||
|
||||
//! Returns the squared distance between p0 and p1, i.e., length2(p0 - p1).
|
||||
//! From GLM_GTX_norm extension.
|
||||
template <typename genType>
|
||||
GLM_FUNC_DECL typename genType::value_type distance2(
|
||||
genType const & p0,
|
||||
genType const & p1);
|
||||
vecType<T, P> const & p0,
|
||||
vecType<T, P> const & p1);
|
||||
|
||||
//! Returns the L1 norm between x and y.
|
||||
//! From GLM_GTX_norm extension.
|
||||
|
@ -30,81 +30,44 @@
|
||||
/// @author Christophe Riccio
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
namespace glm
|
||||
namespace glm{
|
||||
namespace detail
|
||||
{
|
||||
template <typename T>
|
||||
GLM_FUNC_QUALIFIER T length2
|
||||
(
|
||||
T const & x
|
||||
)
|
||||
template <template <typename, precision> class vecType, typename T, precision P, bool Aligned>
|
||||
struct compute_length2
|
||||
{
|
||||
GLM_FUNC_QUALIFIER static T call(vecType<T, P> const & v)
|
||||
{
|
||||
return dot(v, v);
|
||||
}
|
||||
};
|
||||
}//namespace detail
|
||||
|
||||
template <typename genType>
|
||||
GLM_FUNC_QUALIFIER genType length2(genType x)
|
||||
{
|
||||
GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559, "'length2' accepts only floating-point inputs");
|
||||
return x * x;
|
||||
}
|
||||
|
||||
template <typename T, precision P>
|
||||
GLM_FUNC_QUALIFIER T length2
|
||||
(
|
||||
tvec2<T, P> const & x
|
||||
)
|
||||
template <typename T, precision P, template <typename, precision> class vecType>
|
||||
GLM_FUNC_QUALIFIER T length2(vecType<T, P> const & v)
|
||||
{
|
||||
return dot(x, x);
|
||||
}
|
||||
|
||||
template <typename T, precision P>
|
||||
GLM_FUNC_QUALIFIER T length2
|
||||
(
|
||||
tvec3<T, P> const & x
|
||||
)
|
||||
{
|
||||
return dot(x, x);
|
||||
}
|
||||
|
||||
template <typename T, precision P>
|
||||
GLM_FUNC_QUALIFIER T length2
|
||||
(
|
||||
tvec4<T, P> const & x
|
||||
)
|
||||
{
|
||||
return dot(x, x);
|
||||
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'length2' accepts only floating-point inputs");
|
||||
return detail::compute_length2<vecType, T, P, detail::is_aligned<P>::value>::call(v);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
GLM_FUNC_QUALIFIER T distance2
|
||||
(
|
||||
T const & p0,
|
||||
T const & p1
|
||||
)
|
||||
GLM_FUNC_QUALIFIER T distance2(T p0, T p1)
|
||||
{
|
||||
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'distance2' accepts only floating-point inputs");
|
||||
return length2(p1 - p0);
|
||||
}
|
||||
|
||||
template <typename T, precision P>
|
||||
GLM_FUNC_QUALIFIER T distance2
|
||||
(
|
||||
tvec2<T, P> const & p0,
|
||||
tvec2<T, P> const & p1
|
||||
)
|
||||
{
|
||||
return length2(p1 - p0);
|
||||
}
|
||||
|
||||
template <typename T, precision P>
|
||||
GLM_FUNC_QUALIFIER T distance2
|
||||
(
|
||||
tvec3<T, P> const & p0,
|
||||
tvec3<T, P> const & p1
|
||||
)
|
||||
{
|
||||
return length2(p1 - p0);
|
||||
}
|
||||
|
||||
template <typename T, precision P>
|
||||
GLM_FUNC_QUALIFIER T distance2
|
||||
(
|
||||
tvec4<T, P> const & p0,
|
||||
tvec4<T, P> const & p1
|
||||
)
|
||||
template <typename T, precision P, template <typename, precision> class vecType>
|
||||
GLM_FUNC_QUALIFIER T distance2(vecType<T, P> const & p0, vecType<T, P> const & p1)
|
||||
{
|
||||
GLM_STATIC_ASSERT(std::numeric_limits<T>::is_iec559, "'distance2' accepts only floating-point inputs");
|
||||
return length2(p1 - p0);
|
||||
}
|
||||
|
||||
|
@ -57,6 +57,7 @@ glm::mat4 camera(float Translate, glm::vec2 const & Rotate)
|
||||
|
||||
##### Fixes:
|
||||
- Fixed STL for C++11 detection on ICC #510
|
||||
- Fixed missing vec1 overload to length2 and distance2 functions #431
|
||||
|
||||
#### [GLM 0.9.7.5](https://github.com/g-truc/glm/releases/tag/0.9.7.5) - 2016-05-24
|
||||
##### Improvements:
|
||||
|
Loading…
Reference in New Issue
Block a user