   touching: ->
     @universe.near @, @radius, 1
   margins: ->
-    @marges ||= do =>
-      fi = Math.PI * @visualAngle() / 2
-      t1 = @angle - fi
-      t1 = new TrigPair( Math.sin(t1), Math.cos(t1) )
-      t2 = @angle + fi
-      t2 = new TrigPair( Math.sin(t2), Math.cos(t2) )
-      [ t1, t2 ]
+    m = @marges ||= []
+    fi = Math.PI * @visualAngle() / 2
+    t1 = @angle - fi
+    t1 = @universe.tp( Math.sin(t1), Math.cos(t1) )
+    t2 = @angle + fi
+    t2 = @universe.tp( Math.sin(t2), Math.cos(t2) )
+    m.push t1
+    m.push t2
+    m
 
 class Stone extends Thing
   constructor: ( location, options = {} ) ->

  run: ->
    @running = true
    @go()
  # calculate and store the geometric relationship between two things
  trig: ( t, o ) ->
    base = o.x - t.x
    height = o.y - t.y
    tp = new TrigPair(base, height, @minDistance)
    t.others[o.id] = tp
    o.others[t.id] = tp.opposite()
  # finds the things within a particular distance of a reference thing and within a certain
  # wedge around the direction of the things movement
  # if the thing has a visual angle of 1, or the thing is motionless, all things within the distance are returned

    return unless thing.angle?
    theta = anglify vx, vy
    thing.angle = theta + thing.jitter()
    if thing.marges
      while thing.marges.length
        @trigPool.push thing.marges.pop()
  # chooses a random location which does not currently contain anything
  randomLocation: (used) ->
    h = @height
