# A = old position, c = center of ball, v = current moving vector
def reflection_vector(ax,ay,cx,cy,xv,yv)
  # Bouncing of resulting point: R
  rx = ax + xv
  ry = ay + yv
  ux = rx - cx
  uy = ry - cy

  r = (-ux*cx + ux*ax -uy*cy + uy*ay).to_f / ( ux * ux + uy * uy).to_f

  fx = cx + r * ux
  fy = cy + r * uy

  afx = fx - ax
  afy = fy - ay

  gx = ax + 2 * afx
  gy = ay + 2 * afy

  rgx = gx - rx
  rgy = gy - ry

  return rgx,rgy
end


# x,y further away than r allows?
def bouncing?(x,y,cx,cy,r)
  # d(cx,cy,x,y) > r?
  d = Math.sqrt((x - cx)*(x-cx) + ( y - cy)*( y - cy))

  d > r
end

# if the speed vector is higher than the radius, we are done (2x radius would be still okay actually)
def too_fast?(vx,vy,r)
  d = Math.sqrt(vx*vx+vy*vy)

  d > r
end
