Math/VectorI: Add Apply static method

This commit is contained in:
SirLynix 2023-09-09 20:54:39 +02:00 committed by Jérôme Leclercq
parent addbb98671
commit c826b537ab
6 changed files with 21 additions and 0 deletions

View File

@ -88,6 +88,7 @@ namespace Nz
constexpr bool operator>(const Vector2& vec) const;
constexpr bool operator>=(const Vector2& vec) const;
static constexpr Vector2 Apply(T(*func)(T), const Vector2& vec);
static constexpr bool ApproxEqual(const Vector2& lhs, const Vector2& rhs, T maxDifference = std::numeric_limits<T>::epsilon());
template<typename U = T> static U Distance(const Vector2& vec1, const Vector2& vec2);
static constexpr T DotProduct(const Vector2& vec1, const Vector2& vec2);

View File

@ -600,6 +600,12 @@ namespace Nz
return y >= vec.y;
}
template<typename T>
constexpr Vector2<T> Vector2<T>::Apply(T(*func)(T), const Vector2& vec)
{
return Vector2(func(vec.x), func(vec.y));
}
template<typename T>
constexpr bool Vector2<T>::ApproxEqual(const Vector2& lhs, const Vector2& rhs, T maxDifference)
{

View File

@ -92,6 +92,7 @@ namespace Nz
constexpr bool operator>(const Vector3& vec) const;
constexpr bool operator>=(const Vector3& vec) const;
static constexpr Vector3 Apply(T(*func)(T), const Vector3& vec);
static constexpr bool ApproxEqual(const Vector3& lhs, const Vector3& rhs, T maxDifference = std::numeric_limits<T>::epsilon());
static constexpr Vector3 Backward();
static constexpr Vector3 Clamp(const Vector3& vec, const Vector3& min, const Vector3& max);

View File

@ -688,6 +688,12 @@ namespace Nz
return z >= vec.z;
}
template<typename T>
constexpr Vector3<T> Vector3<T>::Apply(T(*func)(T), const Vector3& vec)
{
return Vector3(func(vec.x), func(vec.y), func(vec.z));
}
template<typename T>
constexpr bool Vector3<T>::ApproxEqual(const Vector3& lhs, const Vector3& rhs, T maxDifference)
{

View File

@ -85,6 +85,7 @@ namespace Nz
constexpr bool operator>(const Vector4& vec) const;
constexpr bool operator>=(const Vector4& vec) const;
static constexpr Vector4 Apply(T(*func)(T), const Vector4& vec);
static constexpr bool ApproxEqual(const Vector4& lhs, const Vector4& rhs, T maxDifference = std::numeric_limits<T>::epsilon());
static constexpr T DotProduct(const Vector4& vec1, const Vector4& vec2);
static constexpr Vector4 Lerp(const Vector4& from, const Vector4& to, T interpolation);

View File

@ -644,6 +644,12 @@ namespace Nz
return w >= vec.w;
}
template<typename T>
constexpr Vector4<T> Vector4<T>::Apply(T(*func)(T), const Vector4& vec)
{
return Vector4(func(vec.x), func(vec.y), func(vec.z), func(vec.w));
}
template<typename T>
constexpr bool Vector4<T>::ApproxEqual(const Vector4& lhs, const Vector4& rhs, T maxDifference)
{