diff options
author | rodri <rgl@antares-labs.eu> | 2020-02-20 22:02:08 +0000 |
---|---|---|
committer | rodri <rgl@antares-labs.eu> | 2020-02-20 22:02:08 +0000 |
commit | 168a16b70a928ed64061bdac7fc9d52235c3f9fc (patch) | |
tree | 50ad23804ba927af802d42f2b7a450200fcbf2a7 /vector.c | |
download | ballistics-168a16b70a928ed64061bdac7fc9d52235c3f9fc.tar.gz ballistics-168a16b70a928ed64061bdac7fc9d52235c3f9fc.tar.bz2 ballistics-168a16b70a928ed64061bdac7fc9d52235c3f9fc.zip |
git release.
Diffstat (limited to 'vector.c')
-rw-r--r-- | vector.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/vector.c b/vector.c new file mode 100644 index 0000000..0657845 --- /dev/null +++ b/vector.c @@ -0,0 +1,48 @@ +#include <u.h> +#include <libc.h> +#include "dat.h" +#include "fns.h" + +Vector +Vec(double x, double y, double w) +{ + return (Vector){x, y, w}; +} + +Vector +addvec(Vector v, Vector u) +{ + return (Vector){v.x+u.x, v.y+u.y, v.w+u.w}; +} + +Vector +subvec(Vector v, Vector u) +{ + return (Vector){v.x-u.x, v.y-u.y, v.w-u.w}; +} + +Vector +mulvec(Vector v, double s) +{ + return (Vector){v.x*s, v.y*s, v.w*s}; +} + +double +dotvec(Vector v, Vector u) +{ + return v.x*u.x + v.y*u.y + v.w*u.w; +} + +Vector +normvec(Vector v) +{ + double len; + + len = hypot3(v.x, v.y, v.w); + if(len == 0) + return (Vector){0, 0, 0}; + v.x /= len; + v.y /= len; + v.w /= len; + return v; +} |