                                            (random-vector-between (- 0 bounds) bounds))
                                step-vector bounds))))
 
-;; what is an anchor point for a bezier curve?
-;; added min/max steps to try and guide whether this is a flick, as
-;; well as the variation in random positions
-
-(defn anchor-points [position min-distance max-distance min-steps max-steps variation]
+;; We can now use this random-path lazy sequence to generate a list of
+;; control points given an initial starting point and some bounding
+;; variables. The distance, step and variation allow us to request long
+;; winding paths or short flicks.
+
+(defn control-points [position min-distance max-distance min-steps max-steps variation]
   (let [direction       (random-unit-vector)
         distance        (random-between min-distance max-distance)
         steps           (random-between min-steps max-steps)

        points (map #(for-t % [x-vals y-vals z-vals]) (range 0 1 step-amount))]
    points))

;; this can generate paths that go below the canvas, we should set
;; these to 0 as it is the equivalent of painting on the canvas

(defn ensure-above-canvas [path]

(defn random-between [lower-bound upper-bound]
  (+ lower-bound (rand (- upper-bound lower-bound))))

;; Below is an algorithm that will give well distributed random unit
;; vectors. It was ported from code found [in GameDev the
;; forums](http://www.gamedev.net/topic/499972-generate-a-random-unit-vector/#entry4261773).

(defn random-unit-vector []
  (let [asimuth (* (rand) 2 Math/PI)
