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

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_vermelho =
  texture{
    pigment{ color rgb < 1.00, 0.00, 0.00 > }
    finish{ diffuse 0.9 ambient 0.1 }
  }

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

#declare tx_amarelo =
  texture{
    pigment{ color rgb < 0.80, 0.80, 0.00 > }
    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_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 TAMANHO_COLUNA=1;

#macro escada(altura, degraus, comprimento)
        #declare cont = 0;
        #declare TAMANHO_FILA = altura/(degraus + 1);
        difference {
                box {<0,0,0>, <altura, comprimento, altura>}
                #while(cont < degraus)
                box {
                        <(cont+1)*TAMANHO_FILA, -1, (degraus-cont)*TAMANHO_FILA>,
                        <(cont+2)*TAMANHO_FILA+1, comprimento+1, altura+1>
                }
                #declare cont = cont + 1;
                #end
                texture { tx_plastico }
        }
#end

#macro pessoa_uniforme(tex)
        union {
                cone {<0,0,0>,1 <0,0,2> .5 texture{tex}}
                sphere{<0,0,2.5>, 0.75 texture{tx_amarelo}}
        }
#end

#declare cadeira = union {
        box{<0,0,0>, <.1,.75,1>}
        box{<0,0,0>, <.75,.75,.1>}
        texture{tx_vermelho}
}

#declare roleta = seed(813);
#macro secao(altura, fileiras, colunas)
        union {
                object{escada(altura, fileiras, colunas*TAMANHO_COLUNA) texture{tx_cinza}}
                #declare cont_fileira = 0;
                #declare TAMANHO_FILA = altura/(fileiras + 1);
                #while(cont_fileira < fileiras)
                        #declare cont_coluna = 0;
                        #while(cont_coluna < colunas)
                                object {
                                        cadeira
                                        translate <
                                                (cont_fileira+1)*TAMANHO_FILA+0.1,
                                                cont_coluna*TAMANHO_COLUNA+.25,
                                                (fileiras-cont_fileira)*TAMANHO_FILA
                                        >
                                }
                                object {
                                        #declare valor = rand(roleta);
                                        #if(valor < 0.25)
                                                pessoa_uniforme(tx_vermelho)
                                        #else
                                                #if(valor > .75)
                                                        pessoa_uniforme(tx_xadrez)
                                                #else
                                                        box{<0,0,0>,<0,0,0>}
                                                #end
                                        #end
                                        scale<.25,.25,.25>
                                        translate <
                                                (cont_fileira+1)*TAMANHO_FILA+0.5,
                                                cont_coluna*TAMANHO_COLUNA + 0.5,
                                                (fileiras-cont_fileira)*TAMANHO_FILA+.5
                                        >
                                }
                                #declare cont_coluna = cont_coluna + 1;
                        #end
                        #declare cont_fileira = cont_fileira + 1;
                #end
        }
#end

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

#include "eixos.inc"

union{

        object{ chao  translate < 0,0,-5 > texture{ tx_xadrez } }
        object{secao(4,3,4) translate <0,-13,0>}
        object{escada(4,12,1) translate<0,-9,0>}
        object{secao(4,3,3) translate <0,-8,0>}
        object{escada(4,12,1) translate <0,-5,0>}
        object{secao(4,3,4) translate <0,-4,0>}
                object{object{secao(4,3,4) rotate -90*z} translate<5,5,0>}
                object{object{escada(4,12,1) rotate -90*z} translate<9,5,0>}
                object{object{secao(4,3,4) rotate -90*z} translate<10,5,0>}

}

#include "camlight.inc"
#declare centro_cena = < 0.00, 0.00, 1.00 >;
#declare raio_cena = 20.0;
#declare dir_camera = < 30.00, -20.00, 14.00 >;
#declare dist_camera = 50.0;
#declare intens_luz = 1.00;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)