(** Geographic vector module *) type t (** {2 Construction} *) val create_cartesian : dx:float -> dy:float -> t (** dx, dy in kilometers *) val create_polar : heading:float -> distance:float -> t (** heading in degrees, distance in km *) val between : Coord.t -> Coord.t -> t (** Vector from first to second point *) (** {2 Accessors} *) val dx : t -> float val dy : t -> float val heading : t -> float val distance : t -> float (** {2 Operations} *) val add : t -> t -> t val sub : t -> t -> t val scale : t -> float -> t val neg : t -> t val rotate : t -> float -> t (** Rotate by degrees *) (** {2 Application} *) val apply : Coord.t -> t -> Coord.t (** Apply vector to coordinate *) (** {2 Formatting} *) val to_string : t -> string