sig
type point2d = float * float
type point3d = float * float * float
type vector2d = float * float
type vector3d = float * float * float
type angle = float
module Angle :
sig
type t = AGeom.angle
val pi : float
val of_degrees : float -> AGeom.Angle.t
val to_degrees : AGeom.Angle.t -> float
val add : AGeom.Angle.t -> AGeom.Angle.t -> AGeom.Angle.t
val sub : AGeom.Angle.t -> AGeom.Angle.t -> AGeom.Angle.t
val mul : AGeom.Angle.t -> float -> AGeom.Angle.t
val div : AGeom.Angle.t -> float -> AGeom.Angle.t
val rand : ?max:AGeom.Angle.t -> unit -> AGeom.Angle.t
val srand :
Random.State.t -> ?max:AGeom.Angle.t -> unit -> AGeom.Angle.t
val mean : AGeom.Angle.t list -> AGeom.Angle.t
module Infix :
sig
val ( + ) : AGeom.Angle.t -> AGeom.Angle.t -> AGeom.Angle.t
val ( - ) : AGeom.Angle.t -> AGeom.Angle.t -> AGeom.Angle.t
val ( * ) : AGeom.Angle.t -> float -> AGeom.Angle.t
val ( / ) : AGeom.Angle.t -> float -> AGeom.Angle.t
val ( ?. ) : ?max:AGeom.Angle.t -> unit -> AGeom.Angle.t
end
end
module Point2d :
sig
type t = AGeom.point2d
val of_point3d : AGeom.point3d -> AGeom.Point2d.t
val distance : AGeom.Point2d.t -> AGeom.Point2d.t -> float
val midpoint : AGeom.Point2d.t -> AGeom.Point2d.t -> AGeom.Point2d.t
val dot : AGeom.Point2d.t -> AGeom.Point2d.t -> float
val rand : AGeom.Point2d.t -> AGeom.Point2d.t -> AGeom.Point2d.t
val srand :
Random.State.t ->
AGeom.Point2d.t -> AGeom.Point2d.t -> AGeom.Point2d.t
val to_string : AGeom.Point2d.t -> string
val of_string : string -> AGeom.Point2d.t
module Infix :
sig
val ( -|- ) : AGeom.Point2d.t -> AGeom.Point2d.t -> AGeom.Point2d.t
val ( <=> ) : AGeom.Point2d.t -> AGeom.Point2d.t -> float
val ( ?. ) : AGeom.Point2d.t -> AGeom.Point2d.t -> AGeom.Point2d.t
end
end
module Point3d :
sig
type t = AGeom.point3d
val of_point2d : ?z:float -> AGeom.point2d -> AGeom.Point3d.t
val distance : AGeom.Point3d.t -> AGeom.Point3d.t -> float
val midpoint : AGeom.Point3d.t -> AGeom.Point3d.t -> AGeom.Point3d.t
val rand : AGeom.Point3d.t -> AGeom.Point3d.t -> AGeom.Point3d.t
val srand :
Random.State.t ->
AGeom.Point3d.t -> AGeom.Point3d.t -> AGeom.Point3d.t
val to_string : AGeom.Point3d.t -> string
val of_string : string -> AGeom.Point3d.t
module Infix :
sig
val ( -|- ) : AGeom.Point3d.t -> AGeom.Point3d.t -> AGeom.Point3d.t
val ( <=> ) : AGeom.Point3d.t -> AGeom.Point3d.t -> float
val ( ?. ) : AGeom.Point3d.t -> AGeom.Point3d.t -> AGeom.Point3d.t
end
end
module Vector2d :
sig
type t = AGeom.vector2d
val of_points : AGeom.Point2d.t -> AGeom.Point2d.t -> AGeom.Vector2d.t
val add : AGeom.Vector2d.t -> AGeom.Vector2d.t -> AGeom.Vector2d.t
val sub : AGeom.Vector2d.t -> AGeom.Vector2d.t -> AGeom.Vector2d.t
val mul : AGeom.Vector2d.t -> float -> AGeom.Vector2d.t
val div : AGeom.Vector2d.t -> float -> AGeom.Vector2d.t
val dot : AGeom.Vector2d.t -> AGeom.Vector2d.t -> float
val length : AGeom.Vector2d.t -> float
val normalise : AGeom.Vector2d.t -> AGeom.Vector2d.t
val angle : AGeom.Vector2d.t -> AGeom.Angle.t
val cross : AGeom.Vector2d.t -> AGeom.Vector2d.t -> float
val rot90 : AGeom.Vector2d.t -> AGeom.Vector2d.t
val rot90neg : AGeom.Vector2d.t -> AGeom.Vector2d.t
val get_line_intersection :
seg1:AGeom.Vector2d.t * AGeom.Vector2d.t ->
seg2:AGeom.Vector2d.t * AGeom.Vector2d.t -> AGeom.Vector2d.t option
val rand : float * float -> AGeom.Vector2d.t
val srand : Random.State.t -> float * float -> AGeom.Vector2d.t
val to_string : AGeom.Vector2d.t -> string
val of_string : string -> AGeom.Vector2d.t
module Infix :
sig
val ( + ) :
AGeom.Vector2d.t -> AGeom.Vector2d.t -> AGeom.Vector2d.t
val ( - ) :
AGeom.Vector2d.t -> AGeom.Vector2d.t -> AGeom.Vector2d.t
val ( * ) : AGeom.Vector2d.t -> float -> AGeom.Vector2d.t
val ( / ) : AGeom.Vector2d.t -> float -> AGeom.Vector2d.t
val ( !. ) : AGeom.Vector2d.t -> AGeom.Vector2d.t -> float
val ( ~. ) : AGeom.Vector2d.t -> AGeom.Vector2d.t
val ( ?. ) : float * float -> AGeom.Vector2d.t
end
end
module Vector3d :
sig
type t = AGeom.vector3d
val of_points : AGeom.Point3d.t -> AGeom.Point3d.t -> AGeom.Vector3d.t
val add : AGeom.Vector3d.t -> AGeom.Vector3d.t -> AGeom.Vector3d.t
val sub : AGeom.Vector3d.t -> AGeom.Vector3d.t -> AGeom.Vector3d.t
val mul : AGeom.Vector3d.t -> float -> AGeom.Vector3d.t
val div : AGeom.Vector3d.t -> float -> AGeom.Vector3d.t
val dot : AGeom.Vector3d.t -> AGeom.Vector3d.t -> float
val length : AGeom.Vector3d.t -> float
val normalise : AGeom.Vector3d.t -> AGeom.Vector3d.t
val cross : AGeom.Vector3d.t -> AGeom.Vector3d.t -> AGeom.Vector3d.t
val rand : float * float * float -> AGeom.Vector3d.t
val srand : Random.State.t -> float * float * float -> AGeom.Vector3d.t
val to_string : AGeom.Vector3d.t -> string
val of_string : string -> AGeom.Vector3d.t
module Infix :
sig
val ( + ) :
AGeom.Vector3d.t -> AGeom.Vector3d.t -> AGeom.Vector3d.t
val ( - ) :
AGeom.Vector3d.t -> AGeom.Vector3d.t -> AGeom.Vector3d.t
val ( * ) : AGeom.Vector3d.t -> float -> AGeom.Vector3d.t
val ( / ) : AGeom.Vector3d.t -> float -> AGeom.Vector3d.t
val ( !. ) : AGeom.Vector3d.t -> AGeom.Vector3d.t -> float
val ( ~. ) : AGeom.Vector3d.t -> AGeom.Vector3d.t
val ( ?. ) : float * float * float -> AGeom.Vector3d.t
end
end
module Quaternion :
sig
type t = float * float * float * float
val q : float -> float -> float -> float -> AGeom.Quaternion.t
val real : AGeom.Quaternion.t -> float
val imag : AGeom.Quaternion.t -> float * float * float
val of_scalar : float -> AGeom.Quaternion.t
val to_list : AGeom.Quaternion.t -> float list
val of_list : float list -> AGeom.Quaternion.t
val add :
AGeom.Quaternion.t -> AGeom.Quaternion.t -> AGeom.Quaternion.t
val sub :
AGeom.Quaternion.t -> AGeom.Quaternion.t -> AGeom.Quaternion.t
val div :
AGeom.Quaternion.t -> AGeom.Quaternion.t -> AGeom.Quaternion.t
val mul :
AGeom.Quaternion.t -> AGeom.Quaternion.t -> AGeom.Quaternion.t
val addr : AGeom.Quaternion.t -> float -> AGeom.Quaternion.t
val radd : float -> AGeom.Quaternion.t -> AGeom.Quaternion.t
val rsub : float -> AGeom.Quaternion.t -> AGeom.Quaternion.t
val subr : AGeom.Quaternion.t -> float -> AGeom.Quaternion.t
val rmul : float -> AGeom.Quaternion.t -> AGeom.Quaternion.t
val mulr : AGeom.Quaternion.t -> float -> AGeom.Quaternion.t
val norm : AGeom.Quaternion.t -> float
val conj : AGeom.Quaternion.t -> AGeom.Quaternion.t
val neg : AGeom.Quaternion.t -> AGeom.Quaternion.t
val unit : AGeom.Quaternion.t -> AGeom.Quaternion.t
val reciprocal : AGeom.Quaternion.t -> AGeom.Quaternion.t
val length : AGeom.Quaternion.t -> float
val to_string : AGeom.Quaternion.t -> string
val of_string : string -> AGeom.Quaternion.t
module Infix :
sig
val ( + ) :
AGeom.Quaternion.t -> AGeom.Quaternion.t -> AGeom.Quaternion.t
val ( - ) :
AGeom.Quaternion.t -> AGeom.Quaternion.t -> AGeom.Quaternion.t
val ( * ) :
AGeom.Quaternion.t -> AGeom.Quaternion.t -> AGeom.Quaternion.t
val ( / ) :
AGeom.Quaternion.t -> AGeom.Quaternion.t -> AGeom.Quaternion.t
val ( ~. ) : AGeom.Quaternion.t -> AGeom.Quaternion.t
val ( |. ) : AGeom.Quaternion.t -> float
end
end
module Curves2d :
sig
module Bezier :
sig
module Linear :
sig
val pnt :
float -> AGeom.Point2d.t * AGeom.Point2d.t -> AGeom.Point2d.t
val drv :
float ->
AGeom.Point2d.t * AGeom.Point2d.t -> AGeom.Vector2d.t
val rand :
AGeom.Point2d.t ->
AGeom.Point2d.t -> AGeom.Point2d.t * AGeom.Point2d.t
val srand :
Random.State.t ->
AGeom.Point2d.t ->
AGeom.Point2d.t -> AGeom.Point2d.t * AGeom.Point2d.t
end
module Quadratic :
sig
val pnt :
float ->
AGeom.Point2d.t * AGeom.Point2d.t * AGeom.Point2d.t ->
AGeom.Point2d.t
val drv :
float ->
AGeom.Point2d.t * AGeom.Point2d.t * AGeom.Point2d.t ->
AGeom.Vector2d.t
val rand :
AGeom.Point2d.t ->
AGeom.Point2d.t ->
AGeom.Point2d.t * AGeom.Point2d.t * AGeom.Point2d.t
val srand :
Random.State.t ->
AGeom.Point2d.t ->
AGeom.Point2d.t ->
AGeom.Point2d.t * AGeom.Point2d.t * AGeom.Point2d.t
end
module Cubic :
sig
val pnt :
float ->
AGeom.Point2d.t * AGeom.Point2d.t * AGeom.Point2d.t *
AGeom.Point2d.t -> AGeom.Point2d.t
val drv :
float ->
AGeom.Point2d.t * AGeom.Point2d.t * AGeom.Point2d.t *
AGeom.Point2d.t -> AGeom.Vector2d.t
val rand :
AGeom.Point2d.t ->
AGeom.Point2d.t ->
AGeom.Point2d.t * AGeom.Point2d.t * AGeom.Point2d.t *
AGeom.Point2d.t
val srand :
Random.State.t ->
AGeom.Point2d.t ->
AGeom.Point2d.t ->
AGeom.Point2d.t * AGeom.Point2d.t * AGeom.Point2d.t *
AGeom.Point2d.t
end
end
module CubicHermiteSpline :
sig
val pnt :
float ->
p_pred:AGeom.Point2d.t ->
p0:AGeom.Point2d.t ->
p1:AGeom.Point2d.t ->
p_succ:AGeom.Point2d.t -> float -> AGeom.Point2d.t
end
end
module Curves3d :
sig
module Bezier :
sig
module Linear :
sig
val pnt :
float -> AGeom.Point3d.t * AGeom.Point3d.t -> AGeom.Point3d.t
val drv :
float ->
AGeom.Point3d.t * AGeom.Point3d.t -> AGeom.Vector3d.t
val rand :
AGeom.Point3d.t ->
AGeom.Point3d.t -> AGeom.Point3d.t * AGeom.Point3d.t
val srand :
Random.State.t ->
AGeom.Point3d.t ->
AGeom.Point3d.t -> AGeom.Point3d.t * AGeom.Point3d.t
end
module Quadratic :
sig
val pnt :
float ->
AGeom.Point3d.t * AGeom.Point3d.t * AGeom.Point3d.t ->
AGeom.Point3d.t
val drv :
float ->
AGeom.Point3d.t * AGeom.Point3d.t * AGeom.Point3d.t ->
AGeom.Vector3d.t
val rand :
AGeom.Point3d.t ->
AGeom.Point3d.t ->
AGeom.Point3d.t * AGeom.Point3d.t * AGeom.Point3d.t
val srand :
Random.State.t ->
AGeom.Point3d.t ->
AGeom.Point3d.t ->
AGeom.Point3d.t * AGeom.Point3d.t * AGeom.Point3d.t
end
module Cubic :
sig
val pnt :
float ->
AGeom.Point3d.t * AGeom.Point3d.t * AGeom.Point3d.t *
AGeom.Point3d.t -> AGeom.Point3d.t
val drv :
float ->
AGeom.Point3d.t * AGeom.Point3d.t * AGeom.Point3d.t *
AGeom.Point3d.t -> AGeom.Vector3d.t
val rand :
AGeom.Point3d.t ->
AGeom.Point3d.t ->
AGeom.Point3d.t * AGeom.Point3d.t * AGeom.Point3d.t *
AGeom.Point3d.t
val srand :
Random.State.t ->
AGeom.Point3d.t ->
AGeom.Point3d.t ->
AGeom.Point3d.t * AGeom.Point3d.t * AGeom.Point3d.t *
AGeom.Point3d.t
end
end
module CubicHermiteSpline :
sig
val pnt :
float ->
p_pred:AGeom.Point3d.t ->
p0:AGeom.Point3d.t ->
p1:AGeom.Point3d.t ->
p_succ:AGeom.Point3d.t -> float -> AGeom.Point3d.t
end
end
end