From 11dee52090c741fd803400aa1dcf2c97ee8ba6eb Mon Sep 17 00:00:00 2001 From: Abdelrahman Date: Sun, 15 Sep 2024 04:53:42 +0100 Subject: [PATCH] Add V2 utilities --- src/vec/vec.h | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/vec/vec.h b/src/vec/vec.h index 6a25fdb..25d283e 100644 --- a/src/vec/vec.h +++ b/src/vec/vec.h @@ -135,6 +135,35 @@ MAKE_LIST_TYPE(V2f); #define dot_v2(V1, V2) ((f32)V1.x * (f32)V2.x + (f32)V1.y * (f32)V2.y) +#define add_v2(V1, V2) \ + ((V2f){ \ + .x = V1.x + V2.x, \ + .y = V1.y + V2.y, \ + }) + +#define sub_v2(V1, V2) \ + ((V2f){ \ + .x = V1.x - V2.x, \ + .y = V1.y - V2.y, \ + }) + +#define mul_v2(V1, V2) \ + ((V2f){ \ + .x = V1.x * V2.x, \ + .y = V1.y * V2.y, \ + }) + +#define num_mul_v2(V, N) ((V2f){.x = (N) * V.x, .y = (N) * V.y}) + +#define magnitude_v2(V) (sqrtf(dot_v2(V, V))) + +#define normalise_v2(V) \ + do { \ + f32 magnitude = magnitude_v2(V); \ + V.x /= magnitude; \ + V.y /= magnitude; \ + } while (0) + #define dot_v3(V1, V2) \ ((f32)V1.x * (f32)V2.x + (f32)V1.y * (f32)V2.y + (f32)V1.z * (f32)V2.z)