(** Signature for points *) module type P = sig type t val empty : t val get_coord : t -> Gg.v2 (** Copy a point and all thoses properties to the given location *) val copy : t -> Gg.v2 -> t end module Make(Point:P) : sig module type BUILDER = sig type t val repr : t -> (module Repr.M with type t = Point.t and type repr = 's) -> 's -> 's end type t (** Return the identifier for this path *) val id : t -> int (** Create a path from a builder *) val to_fixed : (module BUILDER with type t = 'a) -> 'a -> t (** Represent the path *) val repr : t -> (module Repr.M with type t = Point.t and type repr = 's) -> 's -> 's (** Return the distance between a given point and the curve. May return None if the point is out of the curve *) val distance : Gg.v2 -> t -> (Gg.v2 * float) option val map_point : t -> (Point.t -> Point.t) -> t end