summary refs log tree commit diff
path: root/lib/vec.fnl
blob: cce9627bbfbca85496b089513ff4aff408d95497 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
(fn ilerp* [a b c d x]
  (+ c (* (/ (- x a) (- b a)) (- d c))))

(fn add [a b]
  {:x (+ a.x b.x)
   :y (+ a.y b.y)})

(fn sub [a b]
  {:x (- a.x b.x)
   :y (- a.y b.y)})

(fn mul [v n]
  {:x (* v.x n)
   :y (* v.y n)})

(fn mag [v]
  (math.sqrt (+ (* v.x v.x) (* v.y v.y))))

(fn wrap [a b]
  {:x (% a.x b.x)
   :y (% a.y b.y)})

(fn lerp [a b c d x]
  {:x (ilerp* a.x b.x c.x d.x x.x)
   :y (ilerp* a.y b.y c.y d.y x.y)})

{: lerp : add : sub : mul : mag : wrap}