 
     @calculatePhysicalProperties()
 
+  # Public: override this in subclasses to define the vertices of this
+  # polygonal body.
+  vertices: -> []
+
+  # Public: reset any per-frame caches, e.g. vertices, forces, etc.
+  reset: ->
+
   # Public: return an axis-aligned bounding box: [[xmin, ymin], [xmax, ymax]]
   aabb: ->
     vertices = @vertices()


  # bookkeeping
  lastAcceleration: [0, 0]

  # Public: override this in subclasses to define the vertices of this
  # polygonal body.
  vertices: -> []

  # Public: reset any per-frame caches, e.g. vertices, forces, etc.
  reset: ->

  # Public: Initialize a polygonal body.
  #

  resetDebug: -> @debug = {}

  drawDebug: (display) ->
    if minAxis = @debug.minAxis
      Utils.debugLine display, [0,0], minAxis, "#F6F"
    if ref = @debug.reference
      Utils.debugLine display, ref.from, ref.to, "#F66"
    if inc = @debug.incident
      Utils.debugLine display, inc.from, inc.to, "#66F"
    if clipped = @debug.clipped
      Utils.debugLine display, clipped[0], clipped[1], "#FF0"
    if contacts = @debug.contacts
      for contact in contacts
        Utils.debugContact display, contact, "#0F0"
