     tl)
   (-bottom-right [_]
     br)
+  (-top-right [_]
+    (let [[t l] (-vec tl)
+          [b r] (-vec br)]
+      (point t r)))
+  (-bottom-left [_]
+    (let [[t l] (-vec tl)
+          [b r] (-vec br)]
+      (point b l)))
   (-dims [_]
     (p- br tl))
   (-center [_]

(defn rect [tl dims]
  {:pre [(p>= dims [0 0])]}
  (->Rect tl dims))

(ns clj.brutha.geo
  (:require [brutha.math :refer [sqrt]]))

(defprotocol IPoint
  (-x [p])
  (-y [p])
  (-vec [p]))

(defrecord Point [x y]
  IPoint
  (-x [_]
    x)
  (-y [_]
