sig
  type location = float * float * float
  module Color :
    sig
      type t =
          Red
        | Green
        | Blue
        | Yellow
        | White
        | Black
        | Cyan
        | Pink
        | Magenta
        | RGB of float * float * float
        | RGBT of float * float * float * float
    end
  type color = Povray.Color.t
  type texture
  type triangle = Povray.location * Povray.location * Povray.location
  type triangle_c = Povray.triangle * Povray.Color.t
  type face_indice = int * int * int
  type face_indices = Povray.face_indice array
  type scene_desc =
      Include of string
    | Background of Povray.color
    | Camera of Povray.location * Povray.location
    | Light_source of Povray.location * Povray.color
    | Ambient_light of float * float * float
    | Sphere of float * Povray.location * Povray.texture *
        Povray.location option * Povray.location option
    | Cone of float * float * Povray.location * Povray.location *
        Povray.texture
    | Box of Povray.location * Povray.location * Povray.texture *
        Povray.location option * Povray.location option *
        Povray.location option
    | Cylinder of float * Povray.location * Povray.location * Povray.texture
    | Mesh of Povray.triangle list * Povray.texture *
        Povray.location option * Povray.location option *
        Povray.location option
    | MeshC of (Povray.triangle * Povray.color) list *
        Povray.location option * Povray.location option *
        Povray.location option
  module Textures :
    sig
      type stones =
          T_Grnt0
        | T_Grnt1
        | T_Grnt2
        | T_Grnt3
        | T_Grnt4
        | T_Grnt5
        | T_Grnt6
        | T_Grnt7
        | T_Grnt8
        | T_Grnt9
        | T_Grnt10
        | T_Grnt11
        | T_Grnt12
        | T_Grnt13
        | T_Grnt14
        | T_Grnt15
        | T_Grnt16
        | T_Grnt17
        | T_Grnt18
        | T_Grnt19
        | T_Grnt20
        | G1
        | G2
        | G3
        | G4
        | T_Grnt21
        | T_Grnt22
        | T_Grnt23
        | T_Grnt24
        | T_Grnt25
        | T_Grnt26
        | T_Grnt27
        | T_Grnt28
        | T_Grnt29
        | T_Grnt0a
        | T_Grnt1a
        | T_Grnt2a
        | T_Grnt3a
        | T_Grnt4a
        | T_Grnt5a
        | T_Grnt6a
        | T_Grnt7a
        | T_Grnt8a
        | T_Grnt9a
        | T_Grnt10a
        | T_Grnt11a
        | T_Grnt12a
        | T_Grnt13a
        | T_Grnt14a
        | T_Grnt15a
        | T_Grnt16a
        | T_Grnt17a
        | T_Grnt18a
        | T_Grnt19a
        | T_Grnt20a
        | T_Grnt21a
        | T_Grnt22a
        | T_Grnt23a
        | T_Grnt24a
        | T_Crack1
        | T_Crack2
        | T_Crack3
        | T_Crack4
        | T_Stone1
        | T_Stone2
        | T_Stone3
        | T_Stone4
        | T_Stone5
        | T_Stone6
        | T_Stone7
        | T_Stone8
        | T_Stone9
        | T_Stone10
        | T_Stone11
        | T_Stone12
        | T_Stone13
        | T_Stone14
        | T_Stone15
        | T_Stone16
        | T_Stone17
        | T_Stone18
        | T_Stone19
        | T_Stone20
        | T_Stone21
        | T_Stone22
        | T_Stone23
        | T_Stone24
        | T_Stone25
        | T_Stone26
        | T_Stone27
        | T_Stone28
        | T_Stone29
        | T_Stone30
        | T_Stone31
        | T_Stone32
        | T_Stone33
        | T_Stone34
        | T_Stone35
        | T_Stone36
        | T_Stone37
        | T_Stone38
        | T_Stone39
        | T_Stone40
        | T_Stone41
        | T_Stone42
        | T_Stone43
        | T_Stone44
      val to_string : Povray.Textures.stones -> string
    end
  type texture_def = Povray.Textures.stones
  type scene
  val new_scene : unit -> Povray.scene
  val string_of_scene : Povray.scene -> string
  val print_scene : Povray.scene -> unit
  module Inc_file :
    sig
      type t =
          Arrays
        | Chars
        | Colors
        | Consts
        | Debug
        | Finish
        | Functions
        | Glass
        | Glass_old
        | Golds
        | Logo
        | Math
        | Metals
        | Rad_def
        | Rand
        | Textures
        | Transforms
        | Screen
        | Shapes
        | Shapes2
        | Shapes_old
        | Shapesq
        | Skies
        | Stage1
        | Stars
        | Stdcam
        | Stdinc
        | Stoneold
        | Stones
        | Stones1
        | Stones2
        | Strings
        | Sunpos
        | Woodmaps
        | Woods
      val to_string : inc:Povray.Inc_file.t -> string
      val of_string : inc:string -> Povray.Inc_file.t
    end
  type inc_file = Povray.Inc_file.t
  val string_of_inc_file : inc:Povray.inc_file -> string
  val inc_file_of_string : inc:string -> Povray.inc_file
  val add_include : Povray.scene -> inc:Povray.inc_file -> Povray.scene
  val add_background : Povray.scene -> color:Povray.color -> Povray.scene
  val add_light_source :
    Povray.scene ->
    location:float * float * float -> color:Povray.color -> Povray.scene
  val add_camera :
    Povray.scene ->
    location:float * float * float ->
    look_at:float * float * float -> Povray.scene
  val add_ambient_light :
    Povray.scene -> color:float * float * float -> Povray.scene
  val new_texture :
    ?color:Povray.color ->
    ?scale:int -> ?def:Povray.texture_def -> unit -> Povray.texture
  val new_checker :
    color1:Povray.color -> color2:Povray.color -> unit -> Povray.texture
  val add_sphere :
    Povray.scene ->
    center:float * float * float ->
    radius:float ->
    ?translate:float * float * float ->
    ?rotate:float * float * float ->
    ?scale:float * float * float ->
    ?texture:Povray.texture -> unit -> Povray.scene
  val add_cylinder :
    Povray.scene ->
    center1:float * float * float ->
    center2:float * float * float ->
    radius:float -> ?texture:Povray.texture -> unit -> Povray.scene
  val add_box :
    Povray.scene ->
    corner1:float * float * float ->
    corner2:float * float * float ->
    ?translate:float * float * float ->
    ?rotate:float * float * float ->
    ?scale:float * float * float ->
    ?texture:Povray.texture -> unit -> Povray.scene
  val add_cone :
    Povray.scene ->
    center1:float * float * float ->
    radius1:float ->
    center2:float * float * float ->
    radius2:float -> ?texture:Povray.texture -> unit -> Povray.scene
  val add_torus :
    Povray.scene ->
    major:float ->
    minor:float ->
    ?translate:float * float * float ->
    ?rotate:float * float * float ->
    ?texture:Povray.texture -> unit -> Povray.scene
  val add_plane :
    Povray.scene ->
    norm:int * int * int ->
    dist:int -> ?texture:Povray.texture -> unit -> Povray.scene
  val add_text :
    Povray.scene ->
    font:string ->
    text:string ->
    ?thickness:float ->
    ?offset:float -> ?texture:Povray.texture -> unit -> Povray.scene
  val get_color : color:Povray.color -> string
  val get_include : inc:Povray.inc_file -> string
  val get_background : color:Povray.color -> string
  val get_light_source :
    location:float * float * float -> color:Povray.color -> string
  val get_camera :
    location:float * float * float -> look_at:float * float * float -> string
  val get_ambient_light : color:float * float * float -> string
  val get_texture :
    ?color:Povray.color ->
    ?scale:int -> ?def:Povray.texture_def -> unit -> string
  val get_checker :
    color1:Povray.color -> color2:Povray.color -> unit -> string
  val get_sphere :
    center:float * float * float ->
    radius:float ->
    ?translate:float * float * float ->
    ?rotate:float * float * float ->
    ?scale:float * float * float -> ?texture:string -> unit -> string
  val get_cylinder :
    center1:float * float * float ->
    center2:float * float * float ->
    radius:float -> ?texture:string -> unit -> string
  val get_box :
    corner1:float * float * float ->
    corner2:float * float * float ->
    ?translate:float * float * float ->
    ?rotate:float * float * float ->
    ?scale:float * float * float -> ?texture:string -> unit -> string
  val get_cone :
    center1:float * float * float ->
    radius1:float ->
    center2:float * float * float ->
    radius2:float -> ?texture:string -> unit -> string
  val get_torus :
    major:float ->
    minor:float ->
    ?translate:float * float * float ->
    ?rotate:float * float * float -> ?texture:string -> unit -> string
  val get_plane :
    norm:int * int * int -> dist:int -> ?texture:string -> unit -> string
  val get_text :
    font:string ->
    text:string ->
    ?thickness:float -> ?offset:float -> ?texture:string -> unit -> string
  val get_union :
    group:string ->
    ?translate:float * float * float ->
    ?rotate:float * float * float ->
    ?scale:float * float * float -> unit -> string
  val add_union :
    Povray.scene ->
    group:(Povray.scene -> Povray.scene) ->
    ?translate:float * float * float ->
    ?rotate:float * float * float ->
    ?scale:float * float * float -> unit -> Povray.scene
  val get_difference :
    elem1:string -> elem2:string -> ?texture:string -> unit -> string
  val add_difference :
    Povray.scene ->
    elem1:string ->
    elem2:string -> ?texture:Povray.texture -> unit -> Povray.scene
  val add_elem : Povray.scene -> elem:string -> unit -> Povray.scene
  module Desc :
    sig
      val to_scene : Povray.scene_desc list -> Povray.scene
      val add :
        Povray.scene_desc -> Povray.scene_desc list -> Povray.scene_desc list
      val add_elems :
        Povray.scene_desc list ->
        Povray.scene_desc list -> Povray.scene_desc list
      val add_desc : Povray.scene -> Povray.scene_desc -> Povray.scene
      val add_descs : Povray.scene -> Povray.scene_desc list -> Povray.scene
    end
  module Float :
    sig
      val get_camera :
        location:float * float * float ->
        look_at:float * float * float -> string
      val add_camera :
        Povray.scene ->
        location:float * float * float ->
        look_at:float * float * float -> Povray.scene
    end
  module Int :
    sig
      val get_camera :
        location:int * int * int -> look_at:int * int * int -> string
      val add_camera :
        Povray.scene ->
        location:int * int * int -> look_at:int * int * int -> Povray.scene
    end
  module Mesh :
    sig
      val get_mesh :
        triangles:Povray.triangle list ->
        ?translate:float * float * float ->
        ?rotate:float * float * float ->
        ?scale:float * float * float ->
        ?texture:Povray.texture -> unit -> string
      val add_mesh :
        Povray.scene ->
        triangles:Povray.triangle list ->
        ?translate:float * float * float ->
        ?rotate:float * float * float ->
        ?scale:float * float * float ->
        ?texture:Povray.texture -> unit -> Povray.scene
    end
  module MeshC :
    sig
      val get_mesh :
        triangles:Povray.triangle_c list ->
        ?translate:float * float * float ->
        ?rotate:float * float * float ->
        ?scale:float * float * float -> unit -> string
      val add_mesh :
        Povray.scene ->
        triangles:Povray.triangle_c list ->
        ?translate:float * float * float ->
        ?rotate:float * float * float ->
        ?scale:float * float * float -> unit -> Povray.scene
    end
  module MeshD :
    sig
      val get_mesh :
        points:Povray.location array ->
        faces:Povray.face_indice array ->
        ?translate:float * float * float ->
        ?rotate:float * float * float ->
        ?scale:float * float * float ->
        ?texture:Povray.texture -> unit -> string
      val add_mesh :
        Povray.scene ->
        points:Povray.location array ->
        faces:Povray.face_indice array ->
        ?translate:float * float * float ->
        ?rotate:float * float * float ->
        ?scale:float * float * float ->
        ?texture:Povray.texture -> unit -> Povray.scene
    end
  module MeshD2 :
    sig
      val get_mesh :
        points:Povray.location array ->
        faces:(Povray.face_indice * int) array ->
        textures:Povray.texture array ->
        ?translate:float * float * float ->
        ?rotate:float * float * float ->
        ?scale:float * float * float -> unit -> string
      val add_mesh :
        Povray.scene ->
        points:Povray.location array ->
        faces:(Povray.face_indice * int) array ->
        textures:Povray.texture array ->
        ?translate:float * float * float ->
        ?rotate:float * float * float ->
        ?scale:float * float * float -> unit -> Povray.scene
    end
end