Module Physics

val body : Playground.shape -> body
val shot_from : Playground.number -> Playground.number -> body -> body -> body
val pointing : Playground.number -> body -> body
val heavy : Playground.number -> body -> body
val bouncy : Playground.number -> body -> body
val rough : Playground.number -> body -> body
val immovable : body -> body
val upright : body -> body
val fall : Playground.number -> body -> body
val thrust : Playground.number -> body -> body
val slow : Playground.number -> body -> body
val attracted_by : body -> body -> body
val turn : Playground.number -> body -> body
val step : body -> body
val wrap : Playground.screen -> body -> body
val bounce_in : Playground.screen -> Playground.number -> body -> body
val touching : body -> body -> bool
val bounce : body -> body -> body * body
val bounce_off : body -> body -> body
val bounce_all : ?broad_phase:Broadphase.method_ -> body list -> body list
val broad_phase : Broadphase.method_ -> body list -> Broadphase.result
val went_through : body -> body -> bool
val debug : body -> Playground.shape
type world = {
  1. bodies : body list;
  2. memory : Solver.memory;
  3. joints : Joint2d.t list;
}
val world : body list -> world
val simulate : ?gravity:Playground.number -> ?iterations:int -> ?warm_starting:bool -> world -> world
val pin : ?motor:(Playground.number * Playground.number) -> int -> int -> at:(Playground.number * Playground.number) -> world -> world
val rod : int -> int -> at_a:(Playground.number * Playground.number) -> at_b:(Playground.number * Playground.number) -> world -> world
val rope : ?length:Playground.number -> int -> int -> at_a:(Playground.number * Playground.number) -> at_b:(Playground.number * Playground.number) -> world -> world
val set_motor : int -> (Playground.number * Playground.number) -> world -> world
val joint_length : int -> world -> Playground.number
val debug_joints : world -> Playground.shape list
val draw : body -> Playground.shape
val distance : body -> body -> Playground.number
val speed : body -> Playground.number
val outside : Playground.screen -> body -> bool