blob: 943c7dc02b7cff57f6cf300b61b169ab5d07f177 (
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
28
29
30
31
32
33
|
(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 norm [v n]
(mul v (/ (or n 1) (mag v))))
(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)})
(fn clone [v]
{:x v.x :y v.y})
{: lerp : add : sub : mul : mag : wrap : norm : clone}
|