improvement

This commit is contained in:
2026-05-22 12:35:05 +03:00
parent a04bceaeb6
commit 39d0d0683d
6 changed files with 123 additions and 0 deletions
+5
View File
@@ -171,6 +171,11 @@ namespace omath
y = y < static_cast<Type>(0) ? -y : y;
return *this;
}
[[nodiscard("You must use absed vector")]]
constexpr Vector2 abs() const noexcept
{
return Vector2{*this}.abs();
}
[[nodiscard("You must use negated vector")]]
constexpr Vector2 operator-() const noexcept
+5
View File
@@ -121,6 +121,11 @@ namespace omath
return *this;
}
[[nodiscard("You must use absed vector")]]
constexpr Vector3 abs() const noexcept
{
return Vector3{*this}.abs();
}
[[nodiscard("You must use squared distance")]]
constexpr Type distance_to_sqr(const Vector3& other) const noexcept
+5
View File
@@ -113,6 +113,11 @@ namespace omath
return *this;
}
[[nodiscard("You must use absed vector")]]
constexpr Vector4 abs() const noexcept
{
return Vector4{*this}.abs();
}
constexpr Vector4& clamp(const Type& min, const Type& max) noexcept
{
this->x = std::clamp(this->x, min, max);
+32
View File
@@ -240,6 +240,38 @@ TEST_F(UnitTestVector2, Abs_ZeroValues)
EXPECT_FLOAT_EQ(v3.y, 0.0f);
}
TEST_F(UnitTestVector2, Abs_Const_ReturnsAbsoluteCopy)
{
const Vector2 v3(-1.0f, -2.0f);
const Vector2 result = v3.abs();
EXPECT_FLOAT_EQ(result.x, 1.0f);
EXPECT_FLOAT_EQ(result.y, 2.0f);
}
TEST_F(UnitTestVector2, Abs_Const_DoesNotMutateSource)
{
const Vector2 v3(-1.0f, -2.0f);
(void)v3.abs();
EXPECT_FLOAT_EQ(v3.x, -1.0f);
EXPECT_FLOAT_EQ(v3.y, -2.0f);
}
TEST_F(UnitTestVector2, Abs_Const_PositiveValues)
{
const Vector2 v3(1.0f, 2.0f);
const Vector2 result = v3.abs();
EXPECT_FLOAT_EQ(result.x, 1.0f);
EXPECT_FLOAT_EQ(result.y, 2.0f);
}
TEST_F(UnitTestVector2, Abs_Const_MixedSigns)
{
const Vector2 v3(-3.5f, 4.5f);
const Vector2 result = v3.abs();
EXPECT_FLOAT_EQ(result.x, 3.5f);
EXPECT_FLOAT_EQ(result.y, 4.5f);
}
TEST_F(UnitTestVector2, Sum)
{
constexpr float sum = Vector2(1.0f, 2.0f).sum();
+36
View File
@@ -244,6 +244,42 @@ TEST_F(UnitTestVector3, Abs)
EXPECT_FLOAT_EQ(v3.z, 3.0f);
}
TEST_F(UnitTestVector3, Abs_Const_ReturnsAbsoluteCopy)
{
const Vector3 v3(-1.0f, -2.0f, -3.0f);
const Vector3 result = v3.abs();
EXPECT_FLOAT_EQ(result.x, 1.0f);
EXPECT_FLOAT_EQ(result.y, 2.0f);
EXPECT_FLOAT_EQ(result.z, 3.0f);
}
TEST_F(UnitTestVector3, Abs_Const_DoesNotMutateSource)
{
const Vector3 v3(-1.0f, -2.0f, -3.0f);
(void)v3.abs();
EXPECT_FLOAT_EQ(v3.x, -1.0f);
EXPECT_FLOAT_EQ(v3.y, -2.0f);
EXPECT_FLOAT_EQ(v3.z, -3.0f);
}
TEST_F(UnitTestVector3, Abs_Const_PositiveValues)
{
const Vector3 v3(1.0f, 2.0f, 3.0f);
const Vector3 result = v3.abs();
EXPECT_FLOAT_EQ(result.x, 1.0f);
EXPECT_FLOAT_EQ(result.y, 2.0f);
EXPECT_FLOAT_EQ(result.z, 3.0f);
}
TEST_F(UnitTestVector3, Abs_Const_MixedSigns)
{
const Vector3 v3(-1.5f, 2.5f, -3.5f);
const Vector3 result = v3.abs();
EXPECT_FLOAT_EQ(result.x, 1.5f);
EXPECT_FLOAT_EQ(result.y, 2.5f);
EXPECT_FLOAT_EQ(result.z, 3.5f);
}
TEST_F(UnitTestVector3, Sum)
{
constexpr auto sum = Vector3(1.0f, 2.0f, 3.0f).sum();
+40
View File
@@ -226,6 +226,46 @@ TEST_F(UnitTestVector4, Abs)
EXPECT_FLOAT_EQ(v3.w, 4.0f);
}
TEST_F(UnitTestVector4, Abs_Const_ReturnsAbsoluteCopy)
{
const Vector4 v3(-1.0f, -2.0f, -3.0f, -4.0f);
const Vector4 result = v3.abs();
EXPECT_FLOAT_EQ(result.x, 1.0f);
EXPECT_FLOAT_EQ(result.y, 2.0f);
EXPECT_FLOAT_EQ(result.z, 3.0f);
EXPECT_FLOAT_EQ(result.w, 4.0f);
}
TEST_F(UnitTestVector4, Abs_Const_DoesNotMutateSource)
{
const Vector4 v3(-1.0f, -2.0f, -3.0f, -4.0f);
(void)v3.abs();
EXPECT_FLOAT_EQ(v3.x, -1.0f);
EXPECT_FLOAT_EQ(v3.y, -2.0f);
EXPECT_FLOAT_EQ(v3.z, -3.0f);
EXPECT_FLOAT_EQ(v3.w, -4.0f);
}
TEST_F(UnitTestVector4, Abs_Const_PositiveValues)
{
const Vector4 v3(1.0f, 2.0f, 3.0f, 4.0f);
const Vector4 result = v3.abs();
EXPECT_FLOAT_EQ(result.x, 1.0f);
EXPECT_FLOAT_EQ(result.y, 2.0f);
EXPECT_FLOAT_EQ(result.z, 3.0f);
EXPECT_FLOAT_EQ(result.w, 4.0f);
}
TEST_F(UnitTestVector4, Abs_Const_MixedSigns)
{
const Vector4 v3(-1.5f, 2.5f, -3.5f, 4.5f);
const Vector4 result = v3.abs();
EXPECT_FLOAT_EQ(result.x, 1.5f);
EXPECT_FLOAT_EQ(result.y, 2.5f);
EXPECT_FLOAT_EQ(result.z, 3.5f);
EXPECT_FLOAT_EQ(result.w, 4.5f);
}
TEST_F(UnitTestVector4, Sum)
{
constexpr float sum = Vector4(1.0f, 2.0f, 3.0f, 4.0f).sum();