Sliced ext relational extensions
This commit is contained in:
103
glm/ext/matrix_relational.hpp
Normal file
103
glm/ext/matrix_relational.hpp
Normal file
@@ -0,0 +1,103 @@
|
||||
/// @ref ext_matrix_relational
|
||||
/// @file glm/ext/matrix_relational.hpp
|
||||
///
|
||||
/// @see core (dependence)
|
||||
///
|
||||
/// @defgroup ext_vector_relational GLM_EXT_matrix_relational
|
||||
/// @ingroup ext
|
||||
///
|
||||
/// Include <glm/ext/matrix_relational.hpp> to use the features of this extension.
|
||||
///
|
||||
/// Comparison functions for a user defined epsilon values.
|
||||
|
||||
#pragma once
|
||||
|
||||
// Dependencies
|
||||
#include "../detail/setup.hpp"
|
||||
#include "../detail/qualifier.hpp"
|
||||
|
||||
#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
|
||||
# pragma message("GLM: GLM_EXT_matrix_relational extension included")
|
||||
#endif
|
||||
|
||||
namespace glm
|
||||
{
|
||||
/// @addtogroup ext_matrix_relational
|
||||
/// @{
|
||||
|
||||
/// Perform a component-wise equal-to comparison of two matrices.
|
||||
/// Return a boolean vector which components value is True if this expression is satisfied per column of the matrices.
|
||||
///
|
||||
/// @tparam C Integer between 1 and 4 included that qualify the number of columns of the matrix
|
||||
/// @tparam R Integer between 1 and 4 included that qualify the number of rows of the matrix
|
||||
/// @tparam T Floating-point or integer scalar types
|
||||
/// @tparam Q Value from qualifier enum
|
||||
///
|
||||
/// @see ext_matrix_relational
|
||||
template<length_t C, length_t R, typename T, qualifier Q>
|
||||
GLM_FUNC_DECL vec<C, bool, Q> equal(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y);
|
||||
|
||||
/// Returns the component-wise comparison of |x - y| < epsilon.
|
||||
/// True if this expression is satisfied.
|
||||
///
|
||||
/// @tparam C Integer between 1 and 4 included that qualify the number of columns of the matrix
|
||||
/// @tparam R Integer between 1 and 4 included that qualify the number of rows of the matrix
|
||||
/// @tparam T Floating-point or integer scalar types
|
||||
/// @tparam Q Value from qualifier enum
|
||||
///
|
||||
/// @see ext_matrix_relational
|
||||
template<length_t C, length_t R, typename T, qualifier Q>
|
||||
GLM_FUNC_DECL vec<C, bool, Q> equal(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, T epsilon);
|
||||
|
||||
/// Returns the component-wise comparison of |x - y| < epsilon.
|
||||
/// True if this expression is satisfied.
|
||||
///
|
||||
/// @tparam C Integer between 1 and 4 included that qualify the number of columns of the matrix
|
||||
/// @tparam R Integer between 1 and 4 included that qualify the number of rows of the matrix
|
||||
/// @tparam T Floating-point or integer scalar types
|
||||
/// @tparam Q Value from qualifier enum
|
||||
///
|
||||
/// @see ext_matrix_relational
|
||||
template<length_t C, length_t R, typename T, qualifier Q>
|
||||
GLM_FUNC_DECL vec<C, bool, Q> equal(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, vec<C, T, Q> const& epsilon);
|
||||
|
||||
/// Perform a component-wise not-equal-to comparison of two matrices.
|
||||
/// Return a boolean vector which components value is True if this expression is satisfied per column of the matrices.
|
||||
///
|
||||
/// @tparam C Integer between 1 and 4 included that qualify the number of columns of the matrix
|
||||
/// @tparam R Integer between 1 and 4 included that qualify the number of rows of the matrix
|
||||
/// @tparam T Floating-point or integer scalar types
|
||||
/// @tparam Q Value from qualifier enum
|
||||
///
|
||||
/// @see ext_matrix_relational
|
||||
template<length_t C, length_t R, typename T, qualifier Q>
|
||||
GLM_FUNC_DECL vec<C, bool, Q> notEqual(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y);
|
||||
|
||||
/// Returns the component-wise comparison of |x - y| < epsilon.
|
||||
/// True if this expression is not satisfied.
|
||||
///
|
||||
/// @tparam C Integer between 1 and 4 included that qualify the number of columns of the matrix
|
||||
/// @tparam R Integer between 1 and 4 included that qualify the number of rows of the matrix
|
||||
/// @tparam T Floating-point or integer scalar types
|
||||
/// @tparam Q Value from qualifier enum
|
||||
///
|
||||
/// @see ext_matrix_relational
|
||||
template<length_t C, length_t R, typename T, qualifier Q>
|
||||
GLM_FUNC_DECL vec<C, bool, Q> notEqual(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, T epsilon);
|
||||
|
||||
/// Returns the component-wise comparison of |x - y| >= epsilon.
|
||||
/// True if this expression is not satisfied.
|
||||
///
|
||||
/// @tparam C Integer between 1 and 4 included that qualify the number of columns of the matrix
|
||||
/// @tparam R Integer between 1 and 4 included that qualify the number of rows of the matrix
|
||||
/// @tparam T Floating-point or integer scalar types
|
||||
/// @tparam Q Value from qualifier enum
|
||||
///
|
||||
/// @see ext_vector_relational
|
||||
template<length_t C, length_t R, typename T, qualifier Q>
|
||||
GLM_FUNC_DECL vec<C, bool, Q> notEqual(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, vec<C, T, Q> const& epsilon);
|
||||
|
||||
/// @}
|
||||
}//namespace glm
|
||||
|
||||
#include "matrix_relational.inl"
|
||||
88
glm/ext/matrix_relational.inl
Normal file
88
glm/ext/matrix_relational.inl
Normal file
@@ -0,0 +1,88 @@
|
||||
/// @ref ext_vector_relational
|
||||
/// @file glm/ext/vector_relational.inl
|
||||
|
||||
// Dependency:
|
||||
#include "../vector_relational.hpp"
|
||||
#include "../common.hpp"
|
||||
#include "../detail/type_vec.hpp"
|
||||
|
||||
namespace glm
|
||||
{
|
||||
template<typename genType>
|
||||
GLM_FUNC_QUALIFIER bool equal(genType const& x, genType const& y, genType const& epsilon)
|
||||
{
|
||||
return abs(x - y) <= epsilon;
|
||||
}
|
||||
|
||||
template<length_t L, typename T, qualifier Q>
|
||||
GLM_FUNC_QUALIFIER vec<L, bool, Q> equal(vec<L, T, Q> const& x, vec<L, T, Q> const& y, T epsilon)
|
||||
{
|
||||
return equal(x, y, vec<L, T, Q>(epsilon));
|
||||
}
|
||||
|
||||
template<length_t L, typename T, qualifier Q>
|
||||
GLM_FUNC_QUALIFIER vec<L, bool, Q> equal(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, T, Q> const& epsilon)
|
||||
{
|
||||
return lessThanEqual(abs(x - y), epsilon);
|
||||
}
|
||||
|
||||
template<length_t C, length_t R, typename T, qualifier Q>
|
||||
GLM_FUNC_QUALIFIER vec<C, bool, Q> equal(mat<C, R, T, Q> const& a, mat<C, R, T, Q> const& b)
|
||||
{
|
||||
return equal(a, b, static_cast<T>(0));
|
||||
}
|
||||
|
||||
template<length_t C, length_t R, typename T, qualifier Q>
|
||||
GLM_FUNC_QUALIFIER vec<C, bool, Q> equal(mat<C, R, T, Q> const& a, mat<C, R, T, Q> const& b, T epsilon)
|
||||
{
|
||||
return equal(a, b, vec<C, T, Q>(epsilon));
|
||||
}
|
||||
|
||||
template<length_t C, length_t R, typename T, qualifier Q>
|
||||
GLM_FUNC_QUALIFIER vec<C, bool, Q> equal(mat<C, R, T, Q> const& a, mat<C, R, T, Q> const& b, vec<C, T, Q> const& epsilon)
|
||||
{
|
||||
vec<C, bool, Q> Result;
|
||||
for(length_t i = 0, n = C; i < n; ++i)
|
||||
Result[i] = all(equal(a[i], b[i], epsilon[i]));
|
||||
return Result;
|
||||
}
|
||||
|
||||
template<typename genType>
|
||||
GLM_FUNC_QUALIFIER bool notEqual(genType const& x, genType const& y, genType const& epsilon)
|
||||
{
|
||||
return abs(x - y) > epsilon;
|
||||
}
|
||||
|
||||
template<length_t L, typename T, qualifier Q>
|
||||
GLM_FUNC_QUALIFIER vec<L, bool, Q> notEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, T epsilon)
|
||||
{
|
||||
return notEqual(x, y, vec<L, T, Q>(epsilon));
|
||||
}
|
||||
|
||||
template<length_t L, typename T, qualifier Q>
|
||||
GLM_FUNC_QUALIFIER vec<L, bool, Q> notEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, T, Q> const& epsilon)
|
||||
{
|
||||
return greaterThan(abs(x - y), epsilon);
|
||||
}
|
||||
|
||||
template<length_t C, length_t R, typename T, qualifier Q>
|
||||
GLM_FUNC_QUALIFIER vec<C, bool, Q> notEqual(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y)
|
||||
{
|
||||
return notEqual(x, y, static_cast<T>(0));
|
||||
}
|
||||
|
||||
template<length_t C, length_t R, typename T, qualifier Q>
|
||||
GLM_FUNC_QUALIFIER vec<C, bool, Q> notEqual(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, T epsilon)
|
||||
{
|
||||
return notEqual(x, y, vec<C, T, Q>(epsilon));
|
||||
}
|
||||
|
||||
template<length_t C, length_t R, typename T, qualifier Q>
|
||||
GLM_FUNC_QUALIFIER vec<C, bool, Q> notEqual(mat<C, R, T, Q> const& a, mat<C, R, T, Q> const& b, vec<C, T, Q> const& epsilon)
|
||||
{
|
||||
vec<C, bool, Q> Result;
|
||||
for(length_t i = 0, n = C; i < n; ++i)
|
||||
Result[i] = any(notEqual(a[i], b[i], epsilon[i]));
|
||||
return Result;
|
||||
}
|
||||
}//namespace glm
|
||||
46
glm/ext/scalar_relational.hpp
Normal file
46
glm/ext/scalar_relational.hpp
Normal file
@@ -0,0 +1,46 @@
|
||||
/// @ref ext_scalar_relational
|
||||
/// @file glm/ext/scalar_relational.hpp
|
||||
///
|
||||
/// @see core (dependence)
|
||||
///
|
||||
/// @defgroup ext_vector_relational GLM_EXT_scalar_relational
|
||||
/// @ingroup ext
|
||||
///
|
||||
/// Include <glm/ext/scalar_relational.hpp> to use the features of this extension.
|
||||
///
|
||||
/// Comparison functions for a user defined epsilon values.
|
||||
|
||||
#pragma once
|
||||
|
||||
// Dependencies
|
||||
#include "../detail/setup.hpp"
|
||||
#include "../detail/qualifier.hpp"
|
||||
|
||||
#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
|
||||
# pragma message("GLM: GLM_EXT_scalar_relational extension included")
|
||||
#endif
|
||||
|
||||
namespace glm
|
||||
{
|
||||
/// Returns the component-wise comparison of |x - y| < epsilon.
|
||||
/// True if this expression is satisfied.
|
||||
///
|
||||
/// @tparam genType Floating-point or integer scalar types
|
||||
///
|
||||
/// @see ext_vector_relational
|
||||
template<typename genType>
|
||||
GLM_FUNC_DECL bool equal(genType const& x, genType const& y, genType const& epsilon);
|
||||
|
||||
/// Returns the component-wise comparison of |x - y| >= epsilon.
|
||||
/// True if this expression is not satisfied.
|
||||
///
|
||||
/// @tparam genType Floating-point or integer scalar types
|
||||
///
|
||||
/// @see ext_vector_relational
|
||||
template<typename genType>
|
||||
GLM_FUNC_DECL bool notEqual(genType const& x, genType const& y, genType const& epsilon);
|
||||
|
||||
/// @}
|
||||
}//namespace glm
|
||||
|
||||
#include "scalar_relational.inl"
|
||||
20
glm/ext/scalar_relational.inl
Normal file
20
glm/ext/scalar_relational.inl
Normal file
@@ -0,0 +1,20 @@
|
||||
/// @ref ext_scalar_relational
|
||||
/// @file glm/ext/scalar_relational.inl
|
||||
|
||||
// Dependency:
|
||||
#include "../common.hpp"
|
||||
|
||||
namespace glm
|
||||
{
|
||||
template<typename genType>
|
||||
GLM_FUNC_QUALIFIER bool equal(genType const& x, genType const& y, genType const& epsilon)
|
||||
{
|
||||
return abs(x - y) <= epsilon;
|
||||
}
|
||||
|
||||
template<typename genType>
|
||||
GLM_FUNC_QUALIFIER bool notEqual(genType const& x, genType const& y, genType const& epsilon)
|
||||
{
|
||||
return abs(x - y) > epsilon;
|
||||
}
|
||||
}//namespace glm
|
||||
@@ -25,42 +25,6 @@ namespace glm
|
||||
/// @addtogroup ext_vector_relational
|
||||
/// @{
|
||||
|
||||
/// Returns the component-wise comparison of |x - y| <= 0.0.
|
||||
/// True if this expression is satisfied.
|
||||
///
|
||||
/// @tparam C Integer between 1 and 4 included that qualify the number of columns of the matrix
|
||||
/// @tparam R Integer between 1 and 4 included that qualify the number of rows of the matrix
|
||||
/// @tparam T Floating-point or integer scalar types
|
||||
/// @tparam Q Value from qualifier enum
|
||||
///
|
||||
/// @see ext_vector_relational
|
||||
template<length_t C, length_t R, typename T, qualifier Q>
|
||||
GLM_FUNC_DECL vec<C, bool, Q> equal(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y);
|
||||
|
||||
/// Returns the component-wise comparison of |x - y| < epsilon.
|
||||
/// True if this expression is satisfied.
|
||||
///
|
||||
/// @tparam C Integer between 1 and 4 included that qualify the number of columns of the matrix
|
||||
/// @tparam R Integer between 1 and 4 included that qualify the number of rows of the matrix
|
||||
/// @tparam T Floating-point or integer scalar types
|
||||
/// @tparam Q Value from qualifier enum
|
||||
///
|
||||
/// @see ext_vector_relational
|
||||
template<length_t C, length_t R, typename T, qualifier Q>
|
||||
GLM_FUNC_DECL vec<C, bool, Q> equal(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, T epsilon);
|
||||
|
||||
/// Returns the component-wise comparison of |x - y| < epsilon.
|
||||
/// True if this expression is satisfied.
|
||||
///
|
||||
/// @tparam C Integer between 1 and 4 included that qualify the number of columns of the matrix
|
||||
/// @tparam R Integer between 1 and 4 included that qualify the number of rows of the matrix
|
||||
/// @tparam T Floating-point or integer scalar types
|
||||
/// @tparam Q Value from qualifier enum
|
||||
///
|
||||
/// @see ext_vector_relational
|
||||
template<length_t C, length_t R, typename T, qualifier Q>
|
||||
GLM_FUNC_DECL vec<C, bool, Q> equal(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, vec<C, T, Q> const& epsilon);
|
||||
|
||||
/// Returns the component-wise comparison of |x - y| < epsilon.
|
||||
/// True if this expression is satisfied.
|
||||
///
|
||||
@@ -92,42 +56,6 @@ namespace glm
|
||||
template<typename genType>
|
||||
GLM_FUNC_DECL bool equal(genType const& x, genType const& y, genType const& epsilon);
|
||||
|
||||
/// Returns the component-wise comparison of |x - y| <= 0.0.
|
||||
/// True if this expression is not satisfied.
|
||||
///
|
||||
/// @tparam C Integer between 1 and 4 included that qualify the number of columns of the matrix
|
||||
/// @tparam R Integer between 1 and 4 included that qualify the number of rows of the matrix
|
||||
/// @tparam T Floating-point or integer scalar types
|
||||
/// @tparam Q Value from qualifier enum
|
||||
///
|
||||
/// @see ext_vector_relational
|
||||
template<length_t C, length_t R, typename T, qualifier Q>
|
||||
GLM_FUNC_DECL vec<C, bool, Q> notEqual(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y);
|
||||
|
||||
/// Returns the component-wise comparison of |x - y| < epsilon.
|
||||
/// True if this expression is not satisfied.
|
||||
///
|
||||
/// @tparam C Integer between 1 and 4 included that qualify the number of columns of the matrix
|
||||
/// @tparam R Integer between 1 and 4 included that qualify the number of rows of the matrix
|
||||
/// @tparam T Floating-point or integer scalar types
|
||||
/// @tparam Q Value from qualifier enum
|
||||
///
|
||||
/// @see ext_vector_relational
|
||||
template<length_t C, length_t R, typename T, qualifier Q>
|
||||
GLM_FUNC_DECL vec<C, bool, Q> notEqual(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, T epsilon);
|
||||
|
||||
/// Returns the component-wise comparison of |x - y| >= epsilon.
|
||||
/// True if this expression is not satisfied.
|
||||
///
|
||||
/// @tparam C Integer between 1 and 4 included that qualify the number of columns of the matrix
|
||||
/// @tparam R Integer between 1 and 4 included that qualify the number of rows of the matrix
|
||||
/// @tparam T Floating-point or integer scalar types
|
||||
/// @tparam Q Value from qualifier enum
|
||||
///
|
||||
/// @see ext_vector_relational
|
||||
template<length_t C, length_t R, typename T, qualifier Q>
|
||||
GLM_FUNC_DECL vec<C, bool, Q> notEqual(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, vec<C, T, Q> const& epsilon);
|
||||
|
||||
/// Returns the component-wise comparison of |x - y| >= epsilon.
|
||||
/// True if this expression is not satisfied.
|
||||
///
|
||||
|
||||
Reference in New Issue
Block a user