// Exemplo de arquivo de descricao de cena para POV-ray
// Last edited on 2020-09-30 19:57:13 by jstolfi

// ======================================================================
// CORES E TEXTURAS

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



#declare branco = 
  texture{
    pigment{ color rgb < 1 1 1 > }
    finish{ diffuse 0.9 ambient 0.1 }
  }
#declare preto = 
  texture{
    pigment{ color rgb < 0 0 0 > }
    finish{ diffuse 0.9 ambient 0.1 }
  }


// ======================================================================
// DESCRI��O DA CENA 




#declare cubo =  
  box{ 
    <-1,-1,-1>,<1,1,1> texture{branco}
  }
#declare esfera =
  sphere{ 
    <0,0,0>,1 texture{branco}
  }
#declare cone_invertido =
  cone{
    <0,0,0.0>,0,<0,0,3>,1 texture{branco}
  }
#declare cone_normal=
  cone{
    <0,0,1>,1,<0,0,3>,0 texture{branco}
  }
#declare base=
  cylinder{
    <0,0,0>,<0,0,0.5>,1.5 texture{preto}
  }
#declare esfera=
  sphere{
    <0,0,0>,1 texture{branco}
  }
#declare mini_esfera=
  sphere{
    <0,0,0>,0.7 texture{branco}
  }

#declare cano=
  cylinder{
    <0,0,0>,<0.5,0,0>,0.1 texture{preto}
  }
#macro tanque1()
  union{
    object{esfera} object{cone_invertido} object{cano translate<1,0,0> } object{cano translate<-1.5,0,0>} object{cano translate<-1.5,0,0> rotate 270*z rotate 90*x translate<0,0,2>}
  }
#end
#macro tanque2()
  union{
    object{cubo} object{cone_normal} object{cano translate<1,0,0>} object{cano translate<1,0,0> rotate 90*z} object{cano translate<1,0,0> rotate 270*y translate<0,0,2>}

  }
#end
#macro tanque3()
  union{
    object{esfera} object{mini_esfera translate<0,0,1.5>} object{cano translate<1,0,0> } object{cano translate<-1.5,0,0>} object{cano translate<0.7,0,1.5> rotate 90*z}
  }
#end
#declare roleta=seed(34567);
#declare ponta11=<1.5,0,0>;
#declare ponta12=<-1.5,0,0>;
#declare ponta13=<0,0,3.5>;
#declare ponta21=<1.5,0,0>;
#declare ponta22=<0,1.5,0>;
#declare ponta23=<0,0,3.5>;
#declare ponta31=<1.5,0,0>;
#declare ponta32=<-1.5,0,0>;
#declare ponta33=<0,0,2.7>;


#macro gera_tanques(m,n)
  #local i=0;
  #declare pontas=array[3*m*n]
  #while(i<m)
  #local j=0;
    #while(j<n)
      #local tq=int(3*rand(roleta));
      #if(tq=0)
        object{tanque1() translate<5*i,5*j,0>}
      #else
        #if(tq=1)
          object{tanque2() translate<5*i,5*j,0>}
        #else
          object{tanque3() translate<5*i,5*j,0>}
        #end
      #end
      #local j=j+1;
    #end
    #local i=i+1;
  #end
#end

#macro gera_tubulacoes(p,q)

#end
  
// #end
#include "eixos.inc"

// Aqui est� a cena, finalmente:
gera_tanques(3,3)



#include "camlight.inc"
#declare centro_cena = < 0 ,0, -3>;
#declare raio_cena = 15.0;
#declare dir_camera = < 2, 2, 2>;
#declare dist_camera = 5*raio_cena;
#declare intens_luz = 1.20;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)