#include "retalho.inc"
#include "direcao_do_sol.inc"
#include "parametros.inc"

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

#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 chao = 
  box{ <-20,-20,-4>, <+20,+20,-3> texture{pigment{color<0,0.8,0.1>}}}


#declare tx_panel = 
    texture {
        pigment {color <1,0,0>}
        finish {ambient 1 diffuse 0}
    }

#macro painel(pos,rot,escala)
    box {
        <-0.5,-0.5,0>
        <0.5,0.5,0.01>
        scale escala
        rotate rot
        translate pos
    }
#end

#macro piramide(pos,escala)
    prism {
        conic_sweep
        linear_spline
        0, // height 1
        1, // height 2
        5, // the number of points making up the shape...
        <1,1>,<-1,1>,<-1,-1>,<1,-1>,<1,1>
        rotate -x*90
        scale escala
        translate pos
    }
#end

union {
    difference {
        piramide(<0,0,0>,<3,3,3>)
        piramide(<0,0,-2>,<2,2,-2>)    
    }
    piramide(<0,0,-2>,<2,2,-2>)
    box {
        <-2,-2,0>
        <2,2,1>
    }
    piramide(<0,0,3>,<2,2,2>)
    cylinder {
        <0,0,2.7>
        <0,0,4>
        0.3
    }
    cone {
        <0,0,4>, 0.3
        <0,0,5>, 0.0
    }
    
    union {
        painel(<2,0,-2>,<0,45,0>,<2,2,1>)
        painel(<-2,0,-2>,<0,-45,0>,<2,2,1>)
        painel(<0,2,-2>,<-45,0,0>,<2,2,1>)
        painel(<0,-2,-2>,<45,0,0>,<2,2,1>)

        painel(<1.2,0,1.8>,<0,45,0>,<1.2,1.2,1>)
        painel(<-1.2,0,1.8>,<0,-45,0>,<1.2,1.2,1>)
        painel(<0,1.2,1.8>,<-45,0,0>,<1.2,1.2,1>)
        painel(<0,-1.2,1.8>,<45,0,0>,<1.2,1.2,1>)
        texture {tx_panel}
    }
    chao
    pigment {color <0.5,0.5,0.5>}
}

#declare raio_cena = 7.5;
#declare centro_cena = < 0, 0, 0.2>;
#declare dir_sol = direcao_do_sol(lat,lon,mes,hora);
#declare dir_camera = dir_sol;
#declare dist_camera = 200*raio_cena;

#include "camlight.inc"

#declare intens_luz = 1.20;

camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)