summaryrefslogtreecommitdiffstats
path: root/vec.c
diff options
context:
space:
mode:
Diffstat (limited to 'vec.c')
-rw-r--r--vec.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/vec.c b/vec.c
new file mode 100644
index 0000000..ba8edfa
--- /dev/null
+++ b/vec.c
@@ -0,0 +1,51 @@
+#include "balls.h"
+
+Vec
+vsub(Vec v1, Vec v2) {
+ return V(v1.x-v2.x, v1.y-v2.y);
+}
+
+Vec
+vmuls(Vec v, int a) {
+ return V(v.x*a, v.y*a);
+}
+
+Vec
+vdivs(Vec v, int a) {
+ if (a == 0)
+ return V(0, 0);
+ return V(v.x/a, v.y/a);
+}
+
+int
+vdot(Vec v1, Vec v2) {
+ return v1.x*v2.x + v1.y*v2.y;
+}
+
+int
+vlen(Vec v) {
+ return sqrt(v.x*v.x + v.y*v.y);
+}
+
+Vec
+unitnorm(Vec v) {
+ return vdivs(v, vlen(v));
+}
+
+Point
+ptaddv(Point p, Vec v) {
+ p.x += v.x;
+ p.y += v.y;
+ return p;
+}
+
+Vec
+V(int x, int y) {
+ Vec v = {x, y};
+ return v;
+}
+
+Vec
+Vpt(Point p, Point q) {
+ return V(p.x-q.x, p.y-q.y);
+}