sig
  type t
  external create : float -> float -> float -> Osg.Vec3.t = "vec3_create"
  val of_tuple : float * float * float -> Osg.Vec3.t
  val of_array : float array -> Osg.Vec3.t
  external to_array : Osg.Vec3.t -> float array = "vec3_to_array"
  external to_tuple : Osg.Vec3.t -> float * float * float = "vec3_to_tuple"
  external x : Osg.Vec3.t -> float = "vec3_x"
  external y : Osg.Vec3.t -> float = "vec3_y"
  external z : Osg.Vec3.t -> float = "vec3_z"
  external length : Osg.Vec3.t -> float = "vec3_length"
  external length2 : Osg.Vec3.t -> float = "vec3_length2"
  external dot : Osg.Vec3.t -> Osg.Vec3.t -> float = "vec3_dot"
  external minus : Osg.Vec3.t -> Osg.Vec3.t -> Osg.Vec3.t = "vec3_minus"
  external plus : Osg.Vec3.t -> Osg.Vec3.t -> Osg.Vec3.t = "vec3_plus"
  external cross : Osg.Vec3.t -> Osg.Vec3.t -> Osg.Vec3.t = "vec3_cross"
  val scale : float -> Osg.Vec3.t -> Osg.Vec3.t
  val mult : Osg.Vec3.t -> Osg.Vec3.t -> Osg.Vec3.t
end