Module Skp_model

type v3 = Vec3.t
type edge = {
  1. a : int;
  2. b : int;
  3. soft : bool;
  4. curve : bool;
}
type face = {
  1. id : int;
  2. outer : int list;
  3. holes : int list list;
}
type t = {
  1. verts : (int * v3) list;
  2. edges : edge list;
  3. faces : face list;
  4. next : int;
}
val empty : t
val eps : float
val pos : t -> int -> v3
val face : t -> int -> face option
val loops : face -> int list list
val sides : int list -> (int * int) list
val normal : t -> face -> v3
val faces_on : t -> int -> int -> face list
val inside : t -> face -> v3 -> bool
val hit : t -> v3 -> v3 -> (float * face) option
val vertex_at : t -> v3 -> t * int
val add_edge : ?curve:bool -> t -> v3 -> v3 -> t
val add_polygon : ?curve:bool -> t -> v3 list -> t
val push_pull : t -> int -> float -> t
val move : t -> int list -> v3 -> t
val erase_edge : t -> int -> int -> t
val erase_face : t -> int -> t
val vertices_of : edges:(int * int) list -> faces:int list -> t -> int list