mirror of
https://github.com/BlackMATov/vmath.hpp.git
synced 2026-01-04 17:21:04 +07:00
remove algorithm and functional deps
This commit is contained in:
@@ -191,14 +191,14 @@ TEST_CASE("vmath/mat_fun") {
|
||||
STATIC_REQUIRE(inverse(float4x4(0.5)) == float4x4(2.f));
|
||||
|
||||
{
|
||||
constexpr float4x4 m1 = translate(float3{1.f,2.f,3.f});
|
||||
constexpr float4x4 m1 = translate(float3(1.f, 2.f, 3.f));
|
||||
constexpr float4x4 inv_m1 = inverse(m1);
|
||||
constexpr float4x4 ref_m1 = translate(float3{-1.f,-2.f,-3.f});
|
||||
constexpr float4x4 ref_m1 = translate(float3(-1.f, -2.f, -3.f));
|
||||
STATIC_REQUIRE(inv_m1 == approx4x4(ref_m1));
|
||||
}
|
||||
|
||||
{
|
||||
const float3 axis = normalize(float3{1.f,2.f,3.f});
|
||||
const float3 axis = normalize(float3(1.f, 2.f, 3.f));
|
||||
const float4x4 m1 = rotate(0.5f,axis);
|
||||
const float4x4 inv_m1 = inverse(m1);
|
||||
const float4x4 ref_m1 = rotate(-0.5f,axis);
|
||||
@@ -206,7 +206,7 @@ TEST_CASE("vmath/mat_fun") {
|
||||
}
|
||||
|
||||
{
|
||||
const float3 axis = normalize(float3{1.f,2.f,3.f});
|
||||
const float3 axis = normalize(float3(1.f, 2.f, 3.f));
|
||||
const float3x3 m1 = float3x3(rotate(0.5f,axis));
|
||||
const float3x3 inv_m1 = inverse(m1);
|
||||
const float3x3 ref_m1 = float3x3(rotate(-0.5f,axis));
|
||||
@@ -214,7 +214,7 @@ TEST_CASE("vmath/mat_fun") {
|
||||
}
|
||||
|
||||
{
|
||||
const float3 axis = normalize(float3{0.f,0.f,3.f});
|
||||
const float3 axis = normalize(float3(0.f, 0.f, 3.f));
|
||||
const float2x2 m1 = float2x2(rotate(0.5f,axis));
|
||||
const float2x2 inv_m1 = inverse(m1);
|
||||
const float2x2 ref_m1 = float2x2(rotate(-0.5f,axis));
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#include <vmath.hpp/vmath_mat.hpp>
|
||||
#include <vmath.hpp/vmath_mat_fun.hpp>
|
||||
|
||||
#include <limits>
|
||||
#include <cfloat>
|
||||
|
||||
#define STATIC_REQUIRE(...)\
|
||||
static_assert(__VA_ARGS__, #__VA_ARGS__);\
|
||||
@@ -25,7 +25,29 @@ namespace vmath_tests
|
||||
using namespace vmath_hpp;
|
||||
|
||||
template < typename T >
|
||||
inline constexpr T epsilon = std::numeric_limits<T>::epsilon() * 100;
|
||||
struct approx_epsilon;
|
||||
|
||||
template <>
|
||||
struct approx_epsilon<int> {
|
||||
static constexpr int value = 0;
|
||||
};
|
||||
|
||||
template <>
|
||||
struct approx_epsilon<float> {
|
||||
static constexpr float value = FLT_EPSILON * 100;
|
||||
};
|
||||
|
||||
template <>
|
||||
struct approx_epsilon<double> {
|
||||
static constexpr float value = DBL_EPSILON * 100;
|
||||
};
|
||||
|
||||
template < typename T >
|
||||
inline constexpr T approx_epsilon_v = approx_epsilon<T>::value;
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
template < typename T >
|
||||
struct approx {
|
||||
@@ -103,22 +125,22 @@ namespace vmath_tests
|
||||
|
||||
template < typename T >
|
||||
constexpr bool operator==(const T& l, const approx<T>& r) {
|
||||
return equal_to(l, r.value, epsilon<T>);
|
||||
return equal_to(l, r.value, approx_epsilon_v<T>);
|
||||
}
|
||||
|
||||
template < typename T >
|
||||
constexpr bool operator==(const vec<T, 2>& l, const approx2<T>& r) {
|
||||
return all(equal_to(l, r.value, epsilon<T>));
|
||||
return all(equal_to(l, r.value, approx_epsilon_v<T>));
|
||||
}
|
||||
|
||||
template < typename T >
|
||||
constexpr bool operator==(const vec<T, 3>& l, const approx3<T>& r) {
|
||||
return all(equal_to(l, r.value, epsilon<T>));
|
||||
return all(equal_to(l, r.value, approx_epsilon_v<T>));
|
||||
}
|
||||
|
||||
template < typename T >
|
||||
constexpr bool operator==(const vec<T, 4>& l, const approx4<T>& r) {
|
||||
return all(equal_to(l, r.value, epsilon<T>));
|
||||
return all(equal_to(l, r.value, approx_epsilon_v<T>));
|
||||
}
|
||||
|
||||
template < typename T >
|
||||
|
||||
Reference in New Issue
Block a user