diff options
Diffstat (limited to 'src/tests/util/test_maths.cc')
| -rw-r--r-- | src/tests/util/test_maths.cc | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/src/tests/util/test_maths.cc b/src/tests/util/test_maths.cc index 4233adc..ceee756 100644 --- a/src/tests/util/test_maths.cc +++ b/src/tests/util/test_maths.cc @@ -2,8 +2,8 @@ // It tests the mathematical utility functions. // Verifies vector operations, matrix transformations, and interpolation. -#include "util/mini_math.h" #include "../common/test_math_helpers.h" +#include "util/mini_math.h" #include <cassert> #include <iostream> #include <vector> @@ -64,7 +64,8 @@ void test_vec3_special() { // Cross Product vec3 c = vec3::cross(v, v2); - assert(test_near(c.x, 0, 0.001f) && test_near(c.y, 0, 0.001f) && test_near(c.z, 1, 0.001f)); + assert(test_near(c.x, 0, 0.001f) && test_near(c.y, 0, 0.001f) && + test_near(c.z, 1, 0.001f)); } // Tests quaternion rotation, look_at, and slerp @@ -84,11 +85,13 @@ void test_quat() { quat half_pi_rot = quat::from_axis({0, 1, 0}, 3.14159f); // 180 deg Y vec3 rotated_half_pi = half_pi_rot.rotate(v); - assert(test_near(rotated_half_pi.x, -1.0f, 0.001f)); // Rotated 180 deg around Y + assert( + test_near(rotated_half_pi.x, -1.0f, 0.001f)); // Rotated 180 deg around Y vec3 zero_vec(0, 0, 0); vec3 rotated_zero_vec = q.rotate(zero_vec); - assert(test_near(rotated_zero_vec.x, 0.0f, 0.001f) && test_near(rotated_zero_vec.y, 0.0f, 0.001f) && + assert(test_near(rotated_zero_vec.x, 0.0f, 0.001f) && + test_near(rotated_zero_vec.y, 0.0f, 0.001f) && test_near(rotated_zero_vec.z, 0.0f, 0.001f)); // Look At @@ -96,21 +99,26 @@ void test_quat() { // The local forward vector (0,0,-1) should be transformed to (1,0,0) quat l = quat::look_at({0, 0, 0}, {10, 0, 0}, {0, 1, 0}); vec3 f = l.rotate({0, 0, -1}); - assert(test_near(f.x, 1.0f, 0.001f) && test_near(f.y, 0.0f, 0.001f) && test_near(f.z, 0.0f, 0.001f)); + assert(test_near(f.x, 1.0f, 0.001f) && test_near(f.y, 0.0f, 0.001f) && + test_near(f.z, 0.0f, 0.001f)); // Slerp Midpoint quat q1(0, 0, 0, 1); quat q2 = quat::from_axis({0, 1, 0}, 1.5708f); // 90 deg quat mid = slerp(q1, q2, 0.5f); // 45 deg - assert(test_near(mid.y, 0.3826f, 0.001f)); // sin(pi/8) + assert(test_near(mid.y, 0.3826f, 0.001f)); // sin(pi/8) // Slerp edge cases quat slerp_mid_edge = slerp(q1, q2, 0.0f); - assert(test_near(slerp_mid_edge.w, q1.w, 0.001f) && test_near(slerp_mid_edge.x, q1.x, 0.001f) && - test_near(slerp_mid_edge.y, q1.y, 0.001f) && test_near(slerp_mid_edge.z, q1.z, 0.001f)); + assert(test_near(slerp_mid_edge.w, q1.w, 0.001f) && + test_near(slerp_mid_edge.x, q1.x, 0.001f) && + test_near(slerp_mid_edge.y, q1.y, 0.001f) && + test_near(slerp_mid_edge.z, q1.z, 0.001f)); slerp_mid_edge = slerp(q1, q2, 1.0f); - assert(test_near(slerp_mid_edge.w, q2.w, 0.001f) && test_near(slerp_mid_edge.x, q2.x, 0.001f) && - test_near(slerp_mid_edge.y, q2.y, 0.001f) && test_near(slerp_mid_edge.z, q2.z, 0.001f)); + assert(test_near(slerp_mid_edge.w, q2.w, 0.001f) && + test_near(slerp_mid_edge.x, q2.x, 0.001f) && + test_near(slerp_mid_edge.y, q2.y, 0.001f) && + test_near(slerp_mid_edge.z, q2.z, 0.001f)); // FromTo quat from_to_test = @@ -174,8 +182,8 @@ void test_ease() { // Midpoint/Logic tests assert(ease::out_cubic(0.5f) > 0.5f); // Out curves should exceed linear value early - assert( - test_near(ease::in_out_quad(0.5f), 0.5f, 0.001f)); // Symmetric curves hit 0.5 at 0.5 + assert(test_near(ease::in_out_quad(0.5f), 0.5f, + 0.001f)); // Symmetric curves hit 0.5 at 0.5 assert(ease::out_expo(0.5f) > 0.5f); // Exponential out should be above linear } |
