82 lines
2.3 KiB
C
82 lines
2.3 KiB
C
#include "mons_math/vec2.h"
|
|
#include "mons_math/vec3.h"
|
|
#include "mons_math/util.h"
|
|
#include "test.h"
|
|
|
|
int main(void) {
|
|
mons_vec2 a = {2.0, 3.0};
|
|
mons_vec2 b = {6.0, 5.0};
|
|
|
|
// Add
|
|
mons_vec2 sum = mons_vec2_add(a, b);
|
|
ASSERT(mons_vec2_equal(sum, (mons_vec2){8.0, 8.0}));
|
|
|
|
// Add in Place
|
|
mons_vec2_add_inplace(&a, b);
|
|
ASSERT(mons_vec2_equal(a, sum));
|
|
|
|
// Subtract
|
|
mons_vec2 diff = mons_vec2_sub(sum, b);
|
|
ASSERT(mons_vec2_equal(diff, (mons_vec2){2.0, 3.0}));
|
|
|
|
// Subtract in Place
|
|
mons_vec2_sub_inplace(&a, b);
|
|
ASSERT(mons_vec2_equal(diff, a));
|
|
|
|
// Multiply (float)
|
|
mons_vec2 product_f = mons_vec2_mul_f(a, -3.0);
|
|
ASSERT(mons_vec2_equal(product_f, (mons_vec2){-6.0, -9.0}))
|
|
|
|
// Multiply in Place (float)
|
|
mons_vec2_mul_f_inplace(&a, 3.0);
|
|
ASSERT(mons_vec2_equal(mons_vec2_negate(product_f), a))
|
|
|
|
// Divide (float)
|
|
mons_vec2 quotient_f = mons_vec2_div_f(product_f, 3.0);
|
|
mons_vec2_negate_inplace("ient_f);
|
|
ASSERT(mons_vec2_equal(quotient_f, (mons_vec2){2.0, 3.0}));
|
|
|
|
// Divide in Place (float)
|
|
mons_vec2_div_f_inplace(&a, 3.0);
|
|
ASSERT(mons_vec2_equal(quotient_f, a));
|
|
|
|
// Multiply (int)
|
|
mons_vec2 product_i = mons_vec2_mul_i(a, -3);
|
|
ASSERT(mons_vec2_equal(product_i, (mons_vec2){-6.0, -9.0}))
|
|
|
|
// Multiply in Place (int)
|
|
mons_vec2_mul_i_inplace(&a, 3);
|
|
ASSERT(mons_vec2_equal(mons_vec2_negate(product_i), a))
|
|
|
|
// Divide (int)
|
|
mons_vec2 quotient_i = mons_vec2_div_i(product_i, 3);
|
|
mons_vec2_negate_inplace("ient_i);
|
|
ASSERT(mons_vec2_equal(quotient_i, (mons_vec2){2.0, 3.0}));
|
|
|
|
// Divide in Place (int)
|
|
mons_vec2_div_i_inplace(&a, 3);
|
|
ASSERT(mons_vec2_equal(quotient_i, a));
|
|
|
|
// Get Length
|
|
float a_len = mons_vec2_len(a);
|
|
ASSERT(mons_float_approx_equal(a_len, 3.60555));
|
|
|
|
// Dot Product
|
|
float dot = mons_vec2_dot(a, b);
|
|
ASSERT(mons_float_approx_equal(dot, 27.0));
|
|
|
|
// Extend
|
|
mons_vec3 extended = mons_vec2_extend(a);
|
|
ASSERT(mons_vec3_equal(extended, (mons_vec3){a.x, a.y, 0.0}));
|
|
|
|
// Normalize
|
|
mons_vec2 normalized = mons_vec2_normalize(a);
|
|
ASSERT(mons_float_approx_equal(mons_vec2_len(normalized), 1.0));
|
|
|
|
// Normalize in Place
|
|
mons_vec2_normalize_inplace(&a);
|
|
ASSERT(mons_float_approx_equal(mons_vec2_len(a), 1.0));
|
|
|
|
return EXIT_SUCCESS;
|
|
}
|