forked from g-truc/glm
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
a71d553
commit 428a468
Showing
11 changed files
with
328 additions
and
87 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,4 @@ | ||
glmCreateTestGTC(ext_matrix_relational) | ||
glmCreateTestGTC(ext_scalar_relational) | ||
glmCreateTestGTC(ext_vec1) | ||
glmCreateTestGTC(ext_vector_relational) |
Oops, something went wrong.