// 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.30, 0.95, 0.10 > }
    finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 }
  }

#declare tx_blue =
  texture{
    pigment{ color rgb < 0.30, 0.5, 0.90 > }
    finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 }
  }

#declare tx_yellow =
  texture{
    pigment{ color rgb < 1, 1, 0 > }
    finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 }
  }
#declare tx_black =
  texture{
    pigment{ color rgb < 0, 0, 0 > }
    finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 }
  }
#declare tx_white =
  texture{
    pigment{ color rgb < 1, 1, 1 > }
    finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 }
  }

#declare tx_green =
  texture{
    pigment{ color rgb < 0.30, 0.9, 0.20 > }
    finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 }
  }

#declare tx_marrom =
  texture{
    pigment{ color rgb < 0.55, 0.15, 0.45 > }
    finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 }
  }

#declare tx_head =
  texture{
    pigment{ color rgb < 0.90, 0.15, 0.10 > }
    finish{ diffuse 0.8 ambient 0.1 specular 0.5 roughness 0.005 }
  }

#declare tx_fosca =
  texture{
    pigment{ color rgb < 0.75, 0.25, 0.05 > }
    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 corpo =
        box {
                <0,0,0>,
                <2,1,4>
            texture{ tx_blue }
        }
#declare corpo2 =
        box {
                <0,0,0>,
                <2,1,4>
            texture{ tx_head }
        }

#declare braco =
        box {
                <0,0,0>,
                <-2,0.5,0.5>
            texture{ tx_head }
        }
#declare perna =
        box {
                <0,0,0>,
                <0.5,0.5,-2>
            texture{ tx_yellow }
        }

#declare head =
        sphere {
                <0,0,0>, 0.7
                texture{ tx_head }
        }

#declare boneco = union {
  object{head translate<1,0.5,4.6>}
  object{corpo translate <0,0,0>}
  object{braco translate <0,0.25,3>}
  object{braco translate <4,0.25,3>}
  object{perna translate <0.2,0.25,0>}
  object{perna translate <1.3,0.25,0>}
}
#declare boneco2 = union {
  object{head translate<1,0.5,4.6>}
  object{corpo2 translate <0,0,0>}
  object{braco translate <0,0.25,3>}
  object{braco translate <4,0.25,3>}
  object{perna translate <0.2,0.25,0>}
  object{perna translate <1.3,0.25,0>}
}

#declare degrau =
        box {<0,0,0>,<5.5,1,0.5> texture{tx_marrom}     }
#declare degrau2 =
        box {<0,0,0>,<5.5,1,0.5> texture{tx_xadrez}     }

#declare banco = difference {
                sphere{ < 0,0,0 >, 0.5 texture{tx_plastico}}
                box {<1,-1,0>,<-1,1,-1> texture{tx_green}       }
        }
#macro escada(n)
        union {
                #declare i =0;
                #while (i<n)
                        #declare j=n-i;
                        #while (j>0)
                                object{degrau2 translate<0,i,j/2>}
                                #declare j=j-1;
                        #end
                        #declare i=i+1;
                #end
        }
#end

#macro secao(fileiras,assentos)
        union {
                #declare roleta = seed(9317);
                #declare i =0;
                #declare prob1=0.4;
                #declare prob2=0.3;
                #declare tamanho=5.5*assentos/4;
                #while (i<fileiras)
                        #declare j=fileiras-i;
                        #while (j>0)
                                object{degrau scale<tamanho/5.5,1,1> translate<0,i,j/2>}
                                #declare j=j-1;
                        #end

                        #declare k=0;
                        #while (k<assentos)
                                object{banco translate<(tamanho/assentos)*k+0.5,i+0.5,(fileiras-i)/2 +0.5>}
                                #if (rand(roleta) < prob1)
                                        object{boneco scale 0.15 translate<(tamanho/assentos)*k+0.5,i+0.5,(fileiras-i)/2+1.2>}
                                #else
                                        #if (rand(roleta) < prob2)
                                                object{boneco2 scale 0.15 translate<(tamanho/assentos)*k+0.5,i+0.5,(fileiras-i)/2+1.2>}
                                        #end
                                #end
                                #declare k = k+1;
                        #end
                        #declare i=i+1;
                #end

        }
#end
#include "eixos.inc"

#declare chao =
  box{ <0,0,-1>, <20,10,0> }
#declare linhasRetangulo = difference {
  box{ <0,0,-0.1>, <20,10,0> }
  box{ <0.5,0.5,-0.9>, <19.5,9.5,0.1> }
}
#declare circuloCentral = difference {
  cylinder {<0,0,0>, <0,0,0.1>, 2}
  cylinder {<0,0,-0.1>, <0,0,0.11>, 1.7}
}
#declare grandeArea = difference {
  box{ <0,0,-0.1>, <3.5,7,0> }
  box{ <0.5,0.5,-0.9>, <3,6.5,0.1> }
  translate <0,1.5,0>
}
#declare entradaArea = difference {
  object{circuloCentral}
  box{<0,-10,-0.2>, <-10,100,20>}
}
#declare linhaCentral = box {<9.8,0,-0.1>,<10.20,10,0.1> }
#declare pequenaArea = object {grandeArea scale 0.5 translate<0,2.5,0>}
#declare trave = union {
  cylinder {<0,4,0>,<0,4,0.7>, 0.1}
  cylinder {<0,6,0>,<0,6,0.7>, 0.1}
  cylinder {<0,4,0.7>,<0,6,0.7>,0.1}
  translate <0.4,0,0>
}
#declare ladoDireito = union {
  object{grandeArea translate<0,0,0.1> texture{tx_white}}
  object{pequenaArea translate<0,0,0.1> texture{tx_white}}
  object{entradaArea scale 0.7 translate<3.5,5.15,0.1> texture{tx_white}}
  object{trave texture{tx_white}}
}

#declare ladoEsquerdo = object{ladoDireito scale<-1,0,0> translate<20,0,0>}
#declare campo = union {
  object{ chao  translate < 0,0,0 > texture{ tx_plastico } }
  object{linhasRetangulo translate<0,0,0.1> texture{tx_white}}
  object{circuloCentral translate<10,5,0.1> texture {tx_white}}
  object{ladoDireito}
  object{linhaCentral translate<0,0,0.1> texture{tx_white}}
  object{ladoEsquerdo}
}
#declare lado1 = union {
  object{escada(6) translate <-5,-1,-1>}
  object{secao(6,9) translate <0,-1,-1> scale 1}
}
#declare time1= union {
  object {boneco rotate 90*z scale 0.16 translate <3,8,0.4> }
  object {boneco rotate 90*z scale 0.16 translate <3,11,0.4> }

  object {boneco rotate 90*z scale 0.16 translate <1,6,0.4> }
  object {boneco rotate 90*z scale 0.16 translate <0,8,0.4> }
  object {boneco rotate 90*z scale 0.16 translate <0,11,0.4> }
  object {boneco rotate 90*z scale 0.16 translate <1,14,0.4> }

  object {boneco rotate 90*z scale 0.16 translate <-2,6,0.4> }
  object {boneco rotate 90*z scale 0.16 translate <-3,8,0.4> }
  object {boneco rotate 90*z scale 0.16 translate <-3,11,0.4> }
  object {boneco rotate 90*z scale 0.16 translate <-2,14,0.4> }

  object {boneco rotate 90*z scale 0.16 translate <-5,10.3,0.4> }

}
#declare time2 = union {
  object {boneco2 rotate 90*z scale 0.16 translate <12,10,0.4> }

  object {boneco2 rotate 90*z scale 0.16 translate <10,8,0.4> }
  object {boneco2 rotate 90*z scale 0.16 translate <10,12,0.4> }
  object {boneco2 rotate 90*z scale 0.16 translate <10,10,0.4> }

  object {boneco2 rotate 90*z scale 0.16 translate <8,8,0.4> }
  object {boneco2 rotate 90*z scale 0.16 translate <8,12,0.4> }
  object {boneco2 rotate 90*z scale 0.16 translate <8,10,0.4> }
  object {boneco2 rotate 90*z scale 0.16 translate <7,14,0.4> }
  object {boneco2 rotate 90*z scale 0.16 translate <7,6,0.4> }

  object {boneco2 rotate 90*z scale 0.16 translate <4,9,0.4> }
  object {boneco2 rotate 90*z scale 0.16 translate <4,11,0.4> }

}
union{
  object{campo translate<-7,5,0>}
  object{ eixos(3.00) }
  object {lado1}
  object {lado1 scale <0,-1,0> translate<0,20,0.1>}
  object {time1}
  object{time2}

}

#include "camlight.inc"
#declare centro_cena = < 0.00, 7.00, 1.00 >;
#declare raio_cena = 25.0;
#declare dir_camera = < 5.00, 5.00, 5.00 >;
#declare dist_camera = 100.0;
#declare intens_luz = 2.00;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)