diff options
author | rodri <rgl@antares-labs.eu> | 2020-02-20 21:56:37 +0000 |
---|---|---|
committer | rodri <rgl@antares-labs.eu> | 2020-02-20 21:56:37 +0000 |
commit | e1cb9df9355a6ae67aac76dbcde209b8f70796ee (patch) | |
tree | 2a5a01e89fb4b1f9bd497a318fb59e0e34622d60 /vector.c | |
download | asteroids-e1cb9df9355a6ae67aac76dbcde209b8f70796ee.tar.gz asteroids-e1cb9df9355a6ae67aac76dbcde209b8f70796ee.tar.bz2 asteroids-e1cb9df9355a6ae67aac76dbcde209b8f70796ee.zip |
Diffstat (limited to 'vector.c')
-rw-r--r-- | vector.c | 54 |
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; +} |