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

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

#declare s = seed(1);
background{ color rgb < 0.5, 0.5, 0.5 > }

#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.00, 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
  }

// ======================================================================
// DESCRI��O DA CENA 
#include "retalho.inc"
#declare p = array[4][4]
/*#for (i,0,3)
  #for (j,0,3)
    #declare p[i][j] = <i,j,0>;
  #end
#end*/
#declare p[0][0] = <0,0,1>;
#declare p[0][1] = <0,1,1>;
#declare p[0][2] = <0,2,1>;
#declare p[0][3] = <0,3,1>;
#declare p[1][0] = <1,0,2>;
#declare p[1][1] = <1,1,2>;
#declare p[1][2] = <1,2,2>;
#declare p[1][3] = <1,3,2>;
#declare p[2][0] = <2,0,0>;
#declare p[2][1] = <2,1,0>;
#declare p[2][2] = <2,2,0>;
#declare p[2][3] = <2,3,0>;


#declare q = array[4][4];

#declare q[1][0] = <3,0,4>;
#declare q[1][1] = <3,1,4>;
#declare q[1][2] = <3,2,4>;
#declare q[1][3] = <3,3,4>;
#declare q[2][0] = <5,0,2>;
#declare q[2][1] = <5,1,2>;
#declare q[2][2] = <5,2,2>;
#declare q[2][3] = <5,3,2>;
#declare q[3][0] = <6,0,6>;
#declare q[3][1] = <6,1,6>;
#declare q[3][2] = <6,2,6>;
#declare q[3][3] = <6,3,6>;


#declare r = array[4][4];

#declare r[0][0] = <4,4,4>;
#declare r[0][1] = <5,4,4>;
#declare r[0][2] = <6,4,4>;
#declare r[0][3] = <7,4,4>;

#declare r[1][0] = <4,5,5>;
#declare r[1][1] = <5,5,5>;
#declare r[1][2] = <6,5,5>;
#declare r[1][3] = <7,5,5>;

#declare r[2][0] = <4,6,4>;
#declare r[2][1] = <5,6,4>;
#declare r[2][2] = <6,6,4>;
#declare r[2][3] = <7,6,4>;

#declare r[3][0] = <4,7,5>;
#declare r[3][1] = <5,7,5>;
#declare r[3][2] = <6,7,5>;
#declare r[3][3] = <7,7,5>;


#declare p[3][0] = (p[2][0]+q[1][0])/2;
#declare p[3][1] = (p[2][1]+q[1][1])/2;
#declare p[3][2] = (p[2][2]+q[1][2])/2;
#declare p[3][3] = (p[2][3]+q[1][3])/2;

#declare q[0][0] = p[3][0];
#declare q[0][1] = p[3][1];
#declare q[0][2] = p[3][2];
#declare q[0][3] = p[3][3];


#declare r[0][0] = (p[0][1] + q[2][0]);
#declare r[0][1] = <5,4,4>;
#declare r[0][2] = <6,4,4>;
#declare r[0][3] = <7,4,4>;

//#declare q[0][3] = r[0][0];

#declare rad = 0.0;
#declare txg = tx_fosca;
#declare txr = tx_plastico;
#declare xmin = 0;
#declare ymin = 0;
#declare xmax = 1;
#declare ymax = 1;

#macro meio()

  object {union {
  object {retalho (p,rad,txg,txr,xmin,ymin,xmax,ymax) rotate <0, 0, 180>}
  object {retalho (q,rad,txg,txr,xmin,ymin,xmax,ymax) rotate <0, 0, 180>}
  //object {retalho (r,rad,txg,txr,xmin,ymin,xmax,ymax) rotate <0, 0, 180>}
  }}
#end

#macro cadeira()
  #object {union {
    object{meio()}
    object{meio() scale <0, -1, 0> }
  }}
#end

cadeira()

#include "camlight.inc"
#include "eixos.inc"
//eixos(10)
#declare centro_cena = < 0.00, 0.00, 1.00 >;
#declare raio_cena = 10.0;
#declare dir_camera = < 10.00, 7.00, 4.00 >;
#declare dist_camera = raio_cena;
#declare intens_luz = 1.20;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)