Module Joint2d

type kind =
  1. | Pin of {
    1. motor : (float * float) option;
    }
  2. | Rod of {
    1. length : float;
    }
  3. | Rope of {
    1. length : float;
    }
  4. | Pulley of {
    1. ground_a : Vec2.t;
    2. ground_b : Vec2.t;
    3. length : float;
    }
type t = {
  1. a : int;
  2. b : int;
  3. anchor_a : Vec2.t;
  4. anchor_b : Vec2.t;
  5. kind : kind;
}
val pin : Body.t array -> float array -> int -> int -> at:Vec2.t -> ?motor:(float * float) -> unit -> t
val rod : Body.t array -> float array -> int -> int -> at_a:Vec2.t -> at_b:Vec2.t -> unit -> t
val rope : Body.t array -> float array -> int -> int -> at_a:Vec2.t -> at_b:Vec2.t -> ?length:float -> unit -> t
val pulley : Body.t array -> float array -> int -> int -> at_a:Vec2.t -> at_b:Vec2.t -> ground_a:Vec2.t -> ground_b:Vec2.t -> unit -> t
type row
val rows : beta:float -> dt:float -> Body.t array -> float array -> t -> row list
val solve_row : Body.t array -> row -> unit
val anchors : Body.t array -> float array -> t -> Vec2.t * Vec2.t
val length_now : Body.t array -> float array -> t -> float