- (fn point [x y] {:x x :y y})
- (fn point= [a b] (and (= a.x b.x) (= a.y b.y)))
- (fn vadd [a b] {:x (+ a.x b.x) :y (+ a.y b.y)})
- (fn vsub [a b] {:x (- a.x b.x) :y (- a.y b.y)})
- (fn vdiv [a b] {:x (/ a.x b.x) :y (/ a.y b.y)})
- (fn vtimes [a b] {:x (* a.x b.x) :y (* a.y b.y)})
- (fn vmul [a n] {:x (* a.x n) :y (* a.y n)})
- (fn dist [a b] (math.sqrt (+ (^ (- a.x b.x) 2) (^ (- a.y b.y) 2))))
- (fn vmag [v] (dist v (point 0 0)))
- (fn vnorm [v] (vmul v (/ 1 (vmag v))))
- (fn vfn [v f] (point (f v.x) (f v.y)))
|