mirror of
https://github.com/BlackMATov/vmath.hpp.git
synced 2025-12-16 22:19:51 +07:00
lerp instead mix
This commit is contained in:
@@ -101,15 +101,10 @@ namespace vmath_hpp
|
|||||||
}
|
}
|
||||||
|
|
||||||
template < typename T >
|
template < typename T >
|
||||||
constexpr T mix(T x, T y, T a) noexcept {
|
constexpr T lerp(T x, T y, T a) noexcept {
|
||||||
return x * (T(1) - a) + y * a;
|
return x * (T(1) - a) + y * a;
|
||||||
}
|
}
|
||||||
|
|
||||||
template < typename T >
|
|
||||||
constexpr T mix(T x, T y, bool a) noexcept {
|
|
||||||
return a ? y : x;
|
|
||||||
}
|
|
||||||
|
|
||||||
template < typename T >
|
template < typename T >
|
||||||
constexpr T step(T edge, T x) noexcept {
|
constexpr T step(T edge, T x) noexcept {
|
||||||
return x < edge ? T(0) : T(1);
|
return x < edge ? T(0) : T(1);
|
||||||
|
|||||||
@@ -462,23 +462,13 @@ namespace vmath_hpp
|
|||||||
}
|
}
|
||||||
|
|
||||||
template < typename T, std::size_t Size >
|
template < typename T, std::size_t Size >
|
||||||
constexpr vec<T, Size> mix(const vec<T, Size>& xs, const vec<T, Size>& ys, T a) {
|
constexpr vec<T, Size> lerp(const vec<T, Size>& xs, const vec<T, Size>& ys, T a) {
|
||||||
return zip([a](T x, T y) { return mix(x, y, a); }, xs, ys);
|
return zip([a](T x, T y) { return lerp(x, y, a); }, xs, ys);
|
||||||
}
|
}
|
||||||
|
|
||||||
template < typename T, std::size_t Size >
|
template < typename T, std::size_t Size >
|
||||||
constexpr vec<T, Size> mix(const vec<T, Size>& xs, const vec<T, Size>& ys, bool a) {
|
constexpr vec<T, Size> lerp(const vec<T, Size>& xs, const vec<T, Size>& ys, const vec<T, Size>& as) {
|
||||||
return zip([a](T x, T y) { return mix(x, y, a); }, xs, ys);
|
return zip([](T x, T y, T a) { return lerp(x, y, a); }, xs, ys, as);
|
||||||
}
|
|
||||||
|
|
||||||
template < typename T, std::size_t Size >
|
|
||||||
constexpr vec<T, Size> mix(const vec<T, Size>& xs, const vec<T, Size>& ys, const vec<T, Size>& as) {
|
|
||||||
return zip([](T x, T y, T a) { return mix(x, y, a); }, xs, ys, as);
|
|
||||||
}
|
|
||||||
|
|
||||||
template < typename T, std::size_t Size >
|
|
||||||
constexpr vec<T, Size> mix(const vec<T, Size>& xs, const vec<T, Size>& ys, const vec<bool, Size>& as) {
|
|
||||||
return zip([](T x, T y, bool a) { return mix(x, y, a); }, xs, ys, as);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
template < typename T, std::size_t Size >
|
template < typename T, std::size_t Size >
|
||||||
|
|||||||
@@ -90,9 +90,7 @@ TEST_CASE("vmath/fun") {
|
|||||||
STATIC_REQUIRE(saturate(0.5f) == approx(0.5f));
|
STATIC_REQUIRE(saturate(0.5f) == approx(0.5f));
|
||||||
STATIC_REQUIRE(saturate(1.5f) == approx(1.f));
|
STATIC_REQUIRE(saturate(1.5f) == approx(1.f));
|
||||||
|
|
||||||
STATIC_REQUIRE(mix(0.f, 10.f, 0.5f) == approx(5.f));
|
STATIC_REQUIRE(lerp(0.f, 10.f, 0.5f) == approx(5.f));
|
||||||
STATIC_REQUIRE(mix(0.f, 10.f, false) == approx(0.f));
|
|
||||||
STATIC_REQUIRE(mix(0.f, 10.f, true) == approx(10.f));
|
|
||||||
STATIC_REQUIRE(step(0.5f, 0.4f) == approx(0.f));
|
STATIC_REQUIRE(step(0.5f, 0.4f) == approx(0.f));
|
||||||
STATIC_REQUIRE(step(0.5f, 0.6f) == approx(1.f));
|
STATIC_REQUIRE(step(0.5f, 0.6f) == approx(1.f));
|
||||||
STATIC_REQUIRE(smoothstep(0.f, 1.f, 0.1f) == approx(0.028f));
|
STATIC_REQUIRE(smoothstep(0.f, 1.f, 0.1f) == approx(0.028f));
|
||||||
|
|||||||
@@ -128,14 +128,8 @@ TEST_CASE("vmath/vec_fun") {
|
|||||||
|
|
||||||
STATIC_REQUIRE(saturate(vec3f(-1.f,0.5,1.5f)) == approx3(0.f,0.5f,1.f));
|
STATIC_REQUIRE(saturate(vec3f(-1.f,0.5,1.5f)) == approx3(0.f,0.5f,1.f));
|
||||||
|
|
||||||
STATIC_REQUIRE(mix(vec2f(0.f), vec2f(10.f), 0.5f) == approx2(5.f));
|
STATIC_REQUIRE(lerp(vec2f(0.f), vec2f(10.f), 0.5f) == approx2(5.f));
|
||||||
STATIC_REQUIRE(mix(vec2f(0.f), vec2f(10.f), vec2f(0.5f)) == approx2(5.f));
|
STATIC_REQUIRE(lerp(vec2f(0.f), vec2f(10.f), vec2f(0.5f)) == approx2(5.f));
|
||||||
|
|
||||||
STATIC_REQUIRE(mix(vec2f(0.f), vec2f(10.f), true) == approx2(10.f));
|
|
||||||
STATIC_REQUIRE(mix(vec2f(0.f), vec2f(10.f), false) == approx2(0.f));
|
|
||||||
|
|
||||||
STATIC_REQUIRE(mix(vec2f(0.f,5.f), vec2f(10.f,20.f), vec2f(true,false)) == approx2(10.f, 5.f));
|
|
||||||
STATIC_REQUIRE(mix(vec2f(0.f,5.f), vec2f(10.f,20.f), vec2f(true,false)) == approx2(10.f, 5.f));
|
|
||||||
|
|
||||||
STATIC_REQUIRE(step(0.5f, vec2f(0.4f)) == approx2(0.f));
|
STATIC_REQUIRE(step(0.5f, vec2f(0.4f)) == approx2(0.f));
|
||||||
STATIC_REQUIRE(step(0.5f, vec2f(0.6f)) == approx2(1.f));
|
STATIC_REQUIRE(step(0.5f, vec2f(0.6f)) == approx2(1.f));
|
||||||
|
|||||||
Reference in New Issue
Block a user