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

added normalize

parent 99046854
Branches
No related tags found
No related merge requests found
......@@ -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.
Please register or to comment