Module Sectors

type point = float * float
type sector = {
  1. floor : float;
  2. ceiling : float;
  3. light : float;
  4. floor_rgb : int * int * int;
  5. ceiling_rgb : int * int * int;
  6. wall_rgb : int * int * int;
  7. loops : point list list;
}
type line = {
  1. x1 : float;
  2. y1 : float;
  3. x2 : float;
  4. y2 : float;
  5. front : int;
  6. back : int option;
}
type level = {
  1. sectors : sector array;
  2. lines : line array;
  3. start : float * float * float;
  4. exit : int;
}
val rect : float -> float -> float -> float -> point list
val hole : float -> float -> float -> float -> point list
val make : sector list -> start:(float * float * float) -> exit:int -> level
val outpost : level
val side : line -> float -> float -> float
val distance : line -> float -> float -> float
val inside : sector -> float -> float -> bool
val sector_at : level -> float -> float -> int
val radius : float
val height : float
val step : float
val move : level -> (float -> float -> int) -> (float * float) -> (float * float) -> float * float