vector.fnl 497 B

12345678910111213
  1. (fn point [x y] {:x x :y y})
  2. (fn point= [a b] (and (= a.x b.x) (= a.y b.y)))
  3. (fn vadd [a b] {:x (+ a.x b.x) :y (+ a.y b.y)})
  4. (fn vsub [a b] {:x (- a.x b.x) :y (- a.y b.y)})
  5. (fn vdiv [a b] {:x (/ a.x b.x) :y (/ a.y b.y)})
  6. (fn vtimes [a b] {:x (* a.x b.x) :y (* a.y b.y)})
  7. (fn vmul [a n] {:x (* a.x n) :y (* a.y n)})
  8. (fn dist [a b] (math.sqrt (+ (^ (- a.x b.x) 2) (^ (- a.y b.y) 2))))
  9. (fn vmag [v] (dist v (point 0 0)))
  10. (fn vnorm [v] (vmul v (/ 1 (vmag v))))
  11. (fn vfn [v f] (point (f v.x) (f v.y)))