summaryrefslogtreecommitdiff
path: root/vector.c
diff options
context:
space:
mode:
authorrodri <rgl@antares-labs.eu>2020-02-20 21:56:37 +0000
committerrodri <rgl@antares-labs.eu>2020-02-20 21:56:37 +0000
commite1cb9df9355a6ae67aac76dbcde209b8f70796ee (patch)
tree2a5a01e89fb4b1f9bd497a318fb59e0e34622d60 /vector.c
downloadasteroids-e1cb9df9355a6ae67aac76dbcde209b8f70796ee.tar.gz
asteroids-e1cb9df9355a6ae67aac76dbcde209b8f70796ee.tar.bz2
asteroids-e1cb9df9355a6ae67aac76dbcde209b8f70796ee.zip
git release.HEADmaster
Diffstat (limited to 'vector.c')
-rw-r--r--vector.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/vector.c b/vector.c
new file mode 100644
index 0000000..21a3711
--- /dev/null
+++ b/vector.c
@@ -0,0 +1,54 @@
+#include <u.h>
+#include <libc.h>
+#include <draw.h>
+#include "dat.h"
+#include "fns.h"
+
+Vector
+Vec(double x, double y)
+{
+ return (Vector){x, y};
+}
+
+Vector
+Vpt(Point p)
+{
+ return (Vector){p.x, p.y};
+}
+
+Vector
+addvec(Vector v, Vector u)
+{
+ return (Vector){v.x+u.x, v.y+u.y};
+}
+
+Vector
+subvec(Vector v, Vector u)
+{
+ return (Vector){v.x-u.x, v.y-u.y};
+}
+
+Vector
+mulvec(Vector v, double s)
+{
+ return (Vector){v.x*s, v.y*s};
+}
+
+double
+dotvec(Vector v, Vector u)
+{
+ return v.x*u.x + v.y*u.y;
+}
+
+Vector
+normvec(Vector v)
+{
+ double len;
+
+ len = hypot(v.x, v.y);
+ if(len == 0)
+ return (Vector){0, 0};
+ v.x /= len;
+ v.y /= len;
+ return v;
+}