Module Cad_geom

type pt = float * float
val add : pt -> pt -> pt
val sub : pt -> pt -> pt
val scale : float -> pt -> pt
val dot : pt -> pt -> float
val cross : pt -> pt -> float
val dist : pt -> pt -> float
val unit : pt -> pt
val polar : pt -> float -> float -> pt
val angle : pt -> pt -> float
val norm_angle : float -> float
val within : float -> float -> float -> bool
type curve =
  1. | Segment of pt * pt
  2. | Circle of pt * float
  3. | Arc of pt * float * float * float
val arc_ends : pt -> float -> float -> float -> pt * pt
val param : pt -> pt -> pt -> float
val carrier_intersections : curve -> curve -> pt list
val on_piece : curve -> pt -> bool
val intersections : curve -> curve -> pt list
val nearest : curve -> pt -> pt
val distance : curve -> pt -> float
val foot : curve -> pt -> pt