 
   force: (pos, vel) =>
     difference = Vector.subtract(MOUSE.pos, pos)
-    dist_sq = Math.max(difference.mag_sq(), 1)
+    # Set the minimum at 25 to avoid a mouse-singularity
+    dist_sq = Math.max(difference.mag_sq(), 25)
 
     velocity = @vel.mag()
-    g_force = 10000000 * MOUSE.mass * @mass / dist_sq
-    spring_force = 10000 * Math.sqrt(dist_sq)
+    g_force = 1000 * MOUSE.mass * @mass / dist_sq
+    spring_force = 0.01 * Math.sqrt(dist_sq)
+
     spring_and_g_force_vector = Vector.unit(difference)
-      .s_mult(Math.min(spring_force, g_force))
+      .s_mult(Math.min(g_force, spring_force))
 
-    damp_force_vector = Vector.s_mult(@vel, -10)
+    damp_force_vector = Vector.s_mult(@vel, -0.01)
 
     return spring_and_g_force_vector.plus(damp_force_vector)
 

    ctx.restore()

class Animator
  constructor: (canvas) ->
    @$canvas = canvas
    @canvas = @$canvas[0]
    @$canvas.mousemove(@update_mouse_pos)
    @$canvas.mousedown(@explode_particles)
    @particles = @generate_particles(50)
    @tick = .001

  generate_particles: (num) ->
    colors = ['#FF5454', '#FF904A', '#FFCD57', '#FFFC85', '#FFF']

      @pos.y = Math.min(Math.max(@pos.y, 0), canvas.height)
      @vel.y = -@vel.y * 0.5

    @mass = Math.min(Math.max(@vel.mag()/1, 0.1), 1)

  draw: (ctx) =>
    ctx.save()
