Skip to content
Snippets Groups Projects
Commit 4416c853 authored by orestis.malaspin's avatar orestis.malaspin
Browse files

added normalize

parent 99046854
No related branches found
No related tags found
No related merge requests found
Pipeline #12138 passed
......@@ -124,6 +124,30 @@ MU_TEST(test_vec2_norm) {
);
}
MU_TEST(test_vec2_normalize) {
mu_assert(
vec2_is_approx_equal(vec2_normalize(e_x), e_x, MINUNIT_EPSILON),
"||e_x||=1 => normalize(e_x)=e_x"
);
mu_assert(
vec2_is_approx_equal(vec2_normalize(e_y), e_y, MINUNIT_EPSILON),
"||e_y||=1 => normalize(e_y)=e_y"
);
mu_assert(
vec2_is_approx_equal(
vec2_normalize(four_two),
vec2_mul(1.0 / sqrt(20.0), four_two), MINUNIT_EPSILON),
"||v|| = ||(4, 2)|| = sqrt(20) => normalize(v) = 1/sqrt(20) * (4, 2)"
);
mu_assert_double_eq(
vec2_norm(vec2_normalize(four_two)),
1.0
);
}
MU_TEST_SUITE(test_suite) {
MU_SUITE_CONFIGURE(&test_setup, &test_teardown);
......@@ -134,6 +158,7 @@ MU_TEST_SUITE(test_suite) {
MU_RUN_TEST(test_vec2_mul);
MU_RUN_TEST(test_vec2_dot);
MU_RUN_TEST(test_vec2_norm);
MU_RUN_TEST(test_vec2_normalize);
}
int main() {
......
......@@ -40,6 +40,12 @@ double vec2_norm(vec2 v) {
return sqrt(vec2_norm_sqr(v));
}
vec2 vec2_normalize(vec2 v) {
double norm = vec2_norm(v);
return vec2_mul(1.0 / norm, v);
}
bool vec2_is_approx_equal(vec2 lhs, vec2 rhs, double eps) {
return vec2_norm(vec2_sub(lhs, rhs)) < eps;
}
......
......@@ -21,6 +21,8 @@ double vec2_norm_sqr(vec2 v);
double vec2_norm(vec2 v);
vec2 vec2_normalize(vec2 v);
bool vec2_is_approx_equal(vec2 lhs, vec2 rhs, double eps);
void vec2_print(vec2 v);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment