sig
  type vector = float * float
  type point = float * float
  type segment = Gphys.point * Gphys.point
  type 'a circle = {
    cx : float;
    cy : float;
    r : float;
    vx : float;
    vy : float;
    static : bool;
    custom : 'a;
  }
  val update_circles :
    'Gphys.circle list ->
    Gphys.segment list ->
    Gphys.vector -> float -> float -> 'Gphys.circle list
end