Module Particles

type particle = {
  1. pos : Vec2.t;
  2. old : Vec2.t;
  3. pinned : bool;
}
type stick = {
  1. a : int;
  2. b : int;
  3. length : float;
}
val particle : ?pinned:bool -> Vec2.t -> particle
val velocity : dt:float -> particle -> Vec2.t
val step : ?drag:float -> accel:Vec2.t -> dt:float -> particle array -> particle array
val relax : iterations:int -> stick list -> particle array -> particle array
val keep_out : ?friction:float -> Vec2.t list list -> particle array -> particle array
val rope : from:Vec2.t -> towards:Vec2.t -> int -> particle array * stick list