Fixed ticket #153, vector and matrix queries

This commit is contained in:
Christophe Riccio
2011-12-06 12:22:43 +00:00
parent dd244d8d25
commit 7ff95df5e6
7 changed files with 115 additions and 54 deletions

View File

@@ -58,13 +58,13 @@ namespace glm
)
{
bool result = true;
for(typename genType::value_type i = typename genType::value_type(0); result && i < genType::col_size(); ++i)
for(typename genType::size_type i = typename genType::size_type(0); result && i < genType::col_size(); ++i)
{
for(typename genType::value_type j = typename genType::value_type(0); result && j < i ; ++j)
for(typename genType::size_type j = typename genType::size_type(0); result && j < i ; ++j)
result = abs(m[i][j]) <= epsilon;
if(result)
result = abs(m[i][i] - typename genType::value_type(1)) <= epsilon;
for(typename genType::value_type j = i + typename genType::value_type(1); result && j < genType::row_size(); ++j)
for(typename genType::size_type j = i + typename genType::size_type(1); result && j < genType::row_size(); ++j)
result = abs(m[i][j]) <= epsilon;
}
return result;

View File

@@ -60,14 +60,6 @@ namespace glm
genType const & v1,
typename genType::value_type const & epsilon/* = std::numeric_limits<typename genType::value_type>::epsilon()*/);
//! Check whether two vectors are opposites.
//! From GLM_GTX_vector_query extensions.
template <typename genType>
bool areOpposite(
genType const & v0,
genType const & v1,
typename genType::value_type const & epsilon/* = std::numeric_limits<typename genType::value_type>::epsilon()*/);
//! Check whether two vectors are orthogonals.
//! From GLM_GTX_vector_query extensions.
template <typename genType>
@@ -112,14 +104,6 @@ namespace glm
genType const & v1,
typename genType::value_type const & epsilon/* = std::numeric_limits<typename genType::value_type>::epsilon()*/);
//! Check whether two vectors are similar.
//! From GLM_GTX_vector_query extensions.
template <typename genType>
bool areSimilar(
genType const & v0,
genType const & v1,
typename genType::value_type const & epsilon/* = std::numeric_limits<typename genType::value_type>::epsilon()*/);
/// @}
}// namespace glm

View File

@@ -19,7 +19,7 @@ namespace glm
(
detail::tvec2<T> const & v0,
detail::tvec2<T> const & v1,
T const & epsilon
typename detail::tvec2<T>::value_type const & epsilon
)
{
return length(cross(detail::tvec3<T>(v0, T(0)), detail::tvec3<T>(v1, T(0)))) < epsilon;
@@ -30,7 +30,7 @@ namespace glm
(
detail::tvec3<T> const & v0,
detail::tvec3<T> const & v1,
T const & epsilon
typename detail::tvec3<T>::value_type const & epsilon
)
{
return length(cross(v0, v1)) < epsilon;
@@ -41,24 +41,12 @@ namespace glm
(
detail::tvec4<T> const & v0,
detail::tvec4<T> const & v1,
T const & epsilon
typename detail::tvec4<T>::value_type const & epsilon
)
{
return length(cross(detail::tvec3<T>(v0), detail::tvec3<T>(v1))) < epsilon;
}
template <typename genType>
GLM_FUNC_QUALIFIER bool areOpposite
(
genType const & v0,
genType const & v1,
typename genType::value_type const & epsilon
)
{
assert(isNormalized(v0) && isNormalized(v1));
return((typename genType::value_type(1) + dot(v0, v1)) <= epsilon);
}
template <typename genType>
GLM_FUNC_QUALIFIER bool areOrthogonal
(
@@ -173,17 +161,4 @@ namespace glm
return isNormalized(v0, epsilon) && isNormalized(v1, epsilon) && (abs(dot(v0, v1)) <= epsilon);
}
template <typename genType>
GLM_FUNC_QUALIFIER bool areSimilar
(
genType const & v0,
genType const & v1,
typename genType::value_type const & epsilon
)
{
bool similar = true;
for(typename genType::size_type i = 0; similar && i < genType::value_size(); i++)
similar = (abs(v0[i] - v1[i]) <= epsilon);
return similar;
}
}//namespace glm