summaryrefslogtreecommitdiff
path: root/lib/vec2.c
diff options
context:
space:
mode:
authorJoel Stålnacke <joel@saker.fi>2024-10-13 15:09:24 +0300
committerJoel Stålnacke <joel@saker.fi>2024-10-13 15:09:24 +0300
commit53f68bb7b0dce309723675c4b97f726a469031c0 (patch)
treebb156bf099abd5b054822bb7a0cc59cd1ec036c7 /lib/vec2.c
parent6a9b5df8b5ed811fbfde9c78f2599247751a650f (diff)
Added more math functions and sanity checks
No +/-Inf or NaN in my vectors please :)
Diffstat (limited to 'lib/vec2.c')
-rw-r--r--lib/vec2.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/lib/vec2.c b/lib/vec2.c
index b417e9c..d795d50 100644
--- a/lib/vec2.c
+++ b/lib/vec2.c
@@ -1,9 +1,16 @@
+#include <assert.h>
+#include <math.h>
+
#include "types.h"
vec2
dp_vec2_new(float x, float y)
{
vec2 new;
+
+ assert(isfinite(x));
+ assert(isfinite(y));
+
new.x = x;
new.y = y;
return new;
@@ -44,3 +51,17 @@ dp_vec2_dot(vec2 a, vec2 b)
dot.y = a.y * b.y;
return dot;
}
+
+float
+dp_vec2_length(vec2 v)
+{
+ return sqrtf(powf(v.x, 2.f) + powf(v.y, 2.f));
+}
+
+vec2
+dp_vec2_normal(vec2 v)
+{
+ float a;
+ a = 1.f / dp_vec2_length(v);
+ return dp_vec2_mul(v, a);
+}