Module Distance

module Distance: sig .. end

val debug : bool Pervasives.ref
val debug_union : bool Pervasives.ref
val debug_mediatrice : bool Pervasives.ref
val debug_bissectrice : bool Pervasives.ref
val debug_addpro : bool Pervasives.ref
type point = float * float 
type interval = point * point 
type vecteur = point 
type droite = point * vecteur 
val (--) : float * float -> float * float -> float * float
val (++) : float * float -> float * float -> float * float
val comblin : float -> float * float -> float -> float * float -> float * float
val opp : float * float -> float * float
val sprod : float -> float * float -> float * float
val det22 : float * float -> float * float -> float
val solve22 : float * float -> float * float -> float * float -> float * float
val solve22' : float * float -> float * float -> float * float -> float
val coef_inter_lines : (float * float) * (float * float) ->
(float * float) * (float * float) -> float * float * (float * float)
val rotate_90 : 'a * float -> float * 'a
val rotate_180 : float * float -> float * float
val rotate_270 : float * 'a -> 'a * float
val dot_prod : float * float -> float * float -> float
val norm2 : float * float -> float
val near : float * float -> float * float -> bool
val norm : float * float -> float
val normalize : float * float -> float * float
type lin_obj = 
| Line of point * vecteur
| HalfLine of point * vecteur * bool
| Segment of point * point
val print_pt : Pervasives.out_channel -> float * float -> unit
val print_pt16 : Pervasives.out_channel -> float * float -> unit
val print_pto : Pervasives.out_channel -> [> `Some of float * float ] -> unit
val print_pt' : Pervasives.out_channel -> (float * float) list -> unit
val print_obj : Pervasives.out_channel -> lin_obj -> unit
val carrier : lin_obj -> point * vecteur
val length2 : lin_obj -> float
val cut' : point -> lin_obj -> lin_obj
val cut : point -> lin_obj -> lin_obj
val renverse : lin_obj -> lin_obj
val in_range : lin_obj -> float -> bool
val in_range_far : lin_obj -> float -> bool
exception Extrem
val in_range' : lin_obj -> float -> unit
val inter : lin_obj -> lin_obj -> float * float
val inter_far : lin_obj -> lin_obj -> float * float
val next : float * float -> point -> point list -> lin_obj
val next' : vecteur -> point -> point list -> lin_obj
val hd_dir : 'a list -> [> `Some of 'a | `Sup ]
val opt_dir : 'a option -> [> `Inf | `Some of 'a ]
val push : float * float -> (float * float) list -> (float * float) list
val profile_union : vecteur * vecteur ->
point list -> point list -> point list
val segment_profile : (float * float) * (float * float) ->
float * float -> float * float -> (float * float) list
val bezier_profile : vecteur * vecteur ->
float -> (float array * float array) list -> point list
val middle : float * float -> float * float -> float * float
val normalize : float * float -> float * float
val bissectrice : lin_obj -> lin_obj -> lin_obj
val mediatrice : float * float -> float * float -> lin_obj
val project : float * float -> lin_obj -> float * float
type mstate = 
| Bissectrice of lin_obj * lin_obj
| Mediatrice of point * lin_obj * lin_obj * point
| LeftParabola of point * lin_obj * lin_obj
| RightParabola of lin_obj * lin_obj * point
| LeftBack of point * lin_obj * lin_obj
| RightBack of lin_obj * lin_obj * point
val print_st : Pervasives.out_channel -> mstate -> unit
val oleft : mstate -> lin_obj
val oright : mstate -> lin_obj
val advance_parabola : float * float ->
lin_obj -> float * float -> (float * float) * (float * float)
val find_parabola : float * float -> lin_obj -> float * float -> float * float
val ftrue : 'a -> bool
val fand : ('a -> bool) -> ('a -> bool) -> 'a -> bool
val frange : lin_obj -> float * float -> bool
val fortho : lin_obj -> float * float -> bool
val eqdist : lin_obj ->
float * float ->
lin_obj ->
float * float ->
float * float -> (float * float -> bool) -> (float * float) * (float * float)
val ortho : point ->
vecteur ->
point -> vecteur -> 'a -> point
val mediatrice_profile : vecteur * vecteur ->
point list ->
point list ->
(point * point * point) list
val add_dprofile : float ->
float ->
float -> (float * float * float) list -> (float * float * float) list
val area : float * float -> float * float -> float * float -> float * float -> float
val swap_min : float -> float -> float * float
val add_pqprofile : float * float ->
float * float ->
float * float ->
float * float -> (float * float * float) list -> (float * float * float) list
val add_qprofile : float * (float * float * float) list ->
point ->
point ->
point -> point -> float * (float * float * float) list
val add_allprofile : (point * 'a * point) list ->
float * (float * float * float) list
val find_distance : float -> 'a -> (float * float * float) list -> float
val distance : float ->
vecteur * vecteur ->
point list -> point list -> float
module Profile_data: sig .. end
module Profile_cache: Map.Make(Profile_data)
module Distance_data: sig .. end
module Distance_cache: Map.Make(Distance_data)
type distance_cache = {
   mutable generation : int;
   mutable profile_cache : ((float * float) list * int Pervasives.ref) Profile_cache.t;
   mutable distance_cache : (float * int Pervasives.ref) Distance_cache.t;
}
val distance_cache : distance_cache
val read_cache : string -> unit
val write_cache : string -> unit
val bezier_profile : vecteur * vecteur ->
float -> (float array * float array) list -> point list
val distance : float ->
vecteur * vecteur ->
point list -> point list -> float
val translate_profile : (float * 'a) list -> float -> (float * 'a) list