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

#include "eixos.inc"
#include "camlight.inc"
#declare centro_cena = < 0.00, 0.00, 0.00 >;
#declare raio_cena = 10.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)

background{ color rgb < 1, 1, 1 > }

#declare Azul =
  texture{
    pigment{ color rgb < 0.00, 0.00, 1.00 > }
  }
#declare Vermelho =
  texture{
    pigment{ color rgb < 1.00, 0.00, 0.00 > }
  }
#declare Verde =
  texture{
    pigment { color rgb <0.00, 1.00, 0.00> }
  }

#declare member =
  cylinder{
    <0, 0, 0>, <0, 0, 0.5>, 0.1
  }

#macro Pessoa(tx_pessoa)
  union{
    cone{
      <0, 0, 0>, 0.5,
      <0, 0, 1>, 0.2
    }
    sphere{
      <0, 0, 1.5 >, 0.5
    }
    object { member translate <0, -0.25, -0.5> }
    object { member translate <0, +0.25, -0.5> }
    object { member rotate 90*x translate <0, 0.7, 0.5> }
    object { member rotate 90*x translate <0, -0.2, 0.5> }
    scale 0.4
    translate <0, 0, 0.8>
    texture {tx_pessoa}

  }

#end

#macro Escada(degraus, txt_escada)
  union{
    #declare x1 = 1.5;
    #declare x2 = 0;
    #declare z1 = 0;
    #declare z2 = -0.5;
    #declare i = 0;

    #while(i < degraus)
      #declare x1 = x1 - 1.5;
      #declare x2 = x2 - 1.5;
      #declare z1 = z1 + 0.5;
      #declare z2 = z2 + 0.5;
      box{
        <x1, -1, z1>, <x2, 1, z2>
        texture{ txt_escada }
      }
      #declare i = i + 1;
    #end
  }
#end

#macro Arquibancada(fileiras, txt_arq, largura, cadeiras)

  union{
    #declare x1 = 1.5;
    #declare x2 = 0;
    #declare z1 = 0;
    #declare z2 = -0.5;
    #declare xc = 0.5;
    #declare zc = 0;
    #declare i = 0;
    #declare roleta = seed(315);

    #while(i < fileiras)
      #declare j = 0;
      #declare x1 = x1 - 1.5;
      #declare x2 = x2 - 1.5;
      #declare z1 = z1 + 0.5;
      #declare z2 = z2 + 0.5;
      box{
        <x1, -2-largura, z1>, <x2, 2+largura, z2>
        texture{ txt_arq }
      }
      #declare i = i + 1;

      #declare yc = -3.25-largura;
      #declare xc = xc - 1.5;
      #declare zc = zc + 0.5;
      #while(j < cadeiras)
        #declare yc = yc + 1.75;
        object{ Cadeira(xc, yc, zc) }
        #if (rand(roleta) < 0.5)
          object { Pessoa(
            #if(rand(roleta)< 0.5)
              Vermelho
            #else
              Verde
            #end)
            translate<xc+1, yc+0.5, zc > }
        #end
        #declare j = j + 1;
      #end

    #end
  }

#end

#macro Cadeira(x0, y0, z0)
  union{
    cylinder{
      <x0,y0,z0>, <x0,y0,z0+0.5>, 0.15
    }
    cylinder{
     <x0+0.6,y0+0.6,z0>, <x0+0.6,y0+0.6,z0+0.5>, 0.15
    }
    cylinder{
     <x0+0.6,y0,z0>, <x0+0.6,y0,z0+0.5>, 0.15
    }
    cylinder{
     <x0,y0+0.6,z0>, <x0,y0+0.6,z0+0.5>, 0.15
    }
    box{
     <x0+0.8,y0-0.2,z0+0.5>, <x0-0.2,y0+0.8,z0+0.57>
    }
    pigment { color rgb <0.5, 0.5, 0.5> }
  }
#end

union{

  object{ Escada(7, Vermelho) translate <-7, 0, 2.5>}
  object{ Arquibancada(5, Azul, 0.5, 3) translate <-7, 3.5, 2.5> }
  object{ Arquibancada(5, Azul, 0.5, 3) translate <-7, -3.5, 2.5> }
  object{ Arquibancada(5, Verde, 4, 7) }
  object { eixos(5.0) }
}