mirror of
https://github.com/HandmadeMath/HandmadeMath.git
synced 2025-12-29 16:04:33 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1d82b4f0bc | ||
|
|
2fa0b36715 |
@@ -2795,6 +2795,46 @@ HMM_INLINE hmm_bool operator!=(hmm_vec4 Left, hmm_vec4 Right)
|
|||||||
return !HMM_PREFIX(EqualsVec4)(Left, Right);
|
return !HMM_PREFIX(EqualsVec4)(Left, Right);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
COVERAGE(HMM_UnaryMinusVec2, 1)
|
||||||
|
HMM_INLINE hmm_vec2 operator-(hmm_vec2 In)
|
||||||
|
{
|
||||||
|
ASSERT_COVERED(HMM_UnaryMinusVec2);
|
||||||
|
|
||||||
|
hmm_vec2 Result;
|
||||||
|
Result.X = -In.X;
|
||||||
|
Result.Y = -In.Y;
|
||||||
|
return(Result);
|
||||||
|
}
|
||||||
|
|
||||||
|
COVERAGE(HMM_UnaryMinusVec3, 1)
|
||||||
|
HMM_INLINE hmm_vec3 operator-(hmm_vec3 In)
|
||||||
|
{
|
||||||
|
ASSERT_COVERED(HMM_UnaryMinusVec3);
|
||||||
|
|
||||||
|
hmm_vec3 Result;
|
||||||
|
Result.X = -In.X;
|
||||||
|
Result.Y = -In.Y;
|
||||||
|
Result.Z = -In.Z;
|
||||||
|
return(Result);
|
||||||
|
}
|
||||||
|
|
||||||
|
COVERAGE(HMM_UnaryMinusVec4, 1)
|
||||||
|
HMM_INLINE hmm_vec4 operator-(hmm_vec4 In)
|
||||||
|
{
|
||||||
|
ASSERT_COVERED(HMM_UnaryMinusVec4);
|
||||||
|
|
||||||
|
hmm_vec4 Result;
|
||||||
|
#if HANDMADE_MATH__USE_SSE
|
||||||
|
Result.InternalElementsSSE = _mm_xor_ps(In.InternalElementsSSE, _mm_set1_ps(-0.0f));
|
||||||
|
#else
|
||||||
|
Result.X = -In.X;
|
||||||
|
Result.Y = -In.Y;
|
||||||
|
Result.Z = -In.Z;
|
||||||
|
Result.W = -In.W;
|
||||||
|
#endif
|
||||||
|
return(Result);
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
#if defined(__GNUC__) || defined(__clang__)
|
#if defined(__GNUC__) || defined(__clang__)
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ To get started, go download [the latest release](https://github.com/HandmadeMath
|
|||||||
|
|
||||||
Version | Changes |
|
Version | Changes |
|
||||||
----------------|----------------|
|
----------------|----------------|
|
||||||
|
**1.12.0** | Added Unary Minus operator for `HMM_Vec2`, `HMM_Vec3`, and `HMM_Vec4`. |
|
||||||
**1.11.1** | Added HMM_PREFIX macro to a few functions that were missing it. |
|
**1.11.1** | Added HMM_PREFIX macro to a few functions that were missing it. |
|
||||||
**1.11.0** | Added ability to customize or remove the default `HMM_` prefix on function names by defining a macro called `HMM_PREFIX(name)`. |
|
**1.11.0** | Added ability to customize or remove the default `HMM_` prefix on function names by defining a macro called `HMM_PREFIX(name)`. |
|
||||||
**1.10.1** | Removed stdint.h, this doesn't exist on some really old compilers and we didn't really use it anyways. |
|
**1.10.1** | Removed stdint.h, this doesn't exist on some really old compilers and we didn't really use it anyways. |
|
||||||
|
|||||||
@@ -199,3 +199,32 @@ TEST(Subtraction, Quaternion)
|
|||||||
EXPECT_FLOAT_EQ(q1.W, -4.0f);
|
EXPECT_FLOAT_EQ(q1.W, -4.0f);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
TEST(UnaryMinus, Vec2)
|
||||||
|
{
|
||||||
|
hmm_vec2 VectorOne = {1.0f, 2.0f};
|
||||||
|
hmm_vec2 Result = -VectorOne;
|
||||||
|
EXPECT_FLOAT_EQ(Result.X, -1.0f);
|
||||||
|
EXPECT_FLOAT_EQ(Result.Y, -2.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(UnaryMinus, Vec3)
|
||||||
|
{
|
||||||
|
hmm_vec3 VectorOne = {1.0f, 2.0f, 3.0f};
|
||||||
|
hmm_vec3 Result = -VectorOne;
|
||||||
|
EXPECT_FLOAT_EQ(Result.X, -1.0f);
|
||||||
|
EXPECT_FLOAT_EQ(Result.Y, -2.0f);
|
||||||
|
EXPECT_FLOAT_EQ(Result.Z, -3.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(UnaryMinus, Vec4)
|
||||||
|
{
|
||||||
|
hmm_vec4 VectorOne = {1.0f, 2.0f, 3.0f, 4.0f};
|
||||||
|
hmm_vec4 Result = -VectorOne;
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user