// Last edited on DATE TIME by USER
// Processed by remove-cam-lights

#include "textures.inc"
#include"math.inc"

background{ color rgb < 0.75, 0.80, 0.85 > }

#declare tx_plastico =
  texture{
    pigment{ color rgb < 0.10, 0.80, 1.00 > }
    finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 }
  }

#declare tx_fosca =
  texture{
    pigment{ color rgb < 1.00, 0.80, 0.10 > }
    finish{ diffuse 0.9 ambient 0.1 }
  }

#declare tx_espelho =
  texture{
    pigment{ color rgb < 1.00, 0.85, 0.30 > }
    finish{ diffuse 0.2 reflection 0.7*< 1.00, 0.85, 0.30 > ambient 0.1 }
  }

#declare tx_vidro =
  texture{
    pigment{ color rgb < 0.85, 0.95, 1.00 > filter 0.70 }
    finish{ diffuse 0.03 reflection 0.25 ambient 0.02 specular 0.25 roughness 0.005 }
  }

#declare tx_verde =
  texture{
    pigment{ color rgb < 0, 0.80, 0.10 > }
    finish{ diffuse 0.9 ambient 0.1 }
  }

#declare tx_creme =
  texture{
    pigment{ color rgb < 0.9, 1, 0.90 > }
    finish{ diffuse 0.9 ambient 0.1 }
  }

#declare tx_xadrez =
  texture{
    pigment{ checker color rgb < 0.10, 0.32, 0.60 >, color rgb < 1.00, 0.97, 0.90 > }
    finish{ diffuse 0.9 ambient 0.1 }
    scale 2.0
  }

#declare raio = 2.000;

#declare bolota =
  sphere{ < 0,0,0 >, 1 }

#declare chao =
  box{ <-20,-20,-1>, <+20,+20,0> }

#declare botao=
        object { cylinder { <0,0,+0.5>, <0,0,+1>, 0.20 }}

#declare botao2=
        box { <0,0,0> <0.3,0.3,0.3> }

#declare alavanca=
        union{
                sphere {<0,0,0>, 0.1}
                cylinder {<0,0,+0.1>, <0,0,+0.5>, 0.05}
        }

#declare alavanca_on=
        object{ alavanca rotate <0,-135,0>}

#declare alavanca_off=
        object{ alavanca rotate <0,+135,0>}

#declare alavanca_n=
        object{alavanca rotate<0,+180,0>}

#declare muralha =
        union{
                box {<0,0,0> <3,3,0.5> texture {tx_plastico}}
                cylinder {<1.5,0.15,0.5> <1.5,0.15,2>, 0.15 texture {Metal}}
                cylinder {<1.5,2.85,0.5> <1.5,2.85,2>, 0.15 texture {Metal}}
                cone {<1.5,0.15,2>, 0.20 <1.5,0.15,2.5>, 0 texture {Metal}}
                cone {<1.5,2.85,2>, 0.20 <1.5,2.85,2.5>, 0 texture {Metal}}
        }

#macro castelo(p)
                #if (p>1)
                #local p1 = p-1;
                #local p2 = p-1;
                union{
                        object{ castelo(p1) scale <pow(0.5,p1),pow(0.5,p1),pow(0.5,p1)> translate <1,0,p1/2> }
                        object{ castelo(p2) }
                        object{ castelo(p1) scale <pow(0.5,p1),pow(0.5,p1),pow(0.5,p1)> translate <1,1.5,p1/2> }
                }
                #else
                        object{muralha}
                #end
#end

#declare painel=
  box{ <-3,-5,+0.5> <+3,+5,0> }

#include "eixos.inc"

union{
  object{ eixos(3.00) }

  object{ chao  translate < 0,0,-5 > texture{ tx_xadrez }}
  object {castelo(5)}
}

#include "camlight.inc"
#declare centro_cena = < 0.00, 0.00, 1.00 >;
#declare raio_cena = 6.0;
#declare dir_camera = < 14.00, 7.00, 4.00 >;
#declare dist_camera = 16.0;
#declare intens_luz = 1.00;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)