// Last edited on DATE TIME by USER
// Processed by remove-cam-lights
#include "retalho.inc"

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_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 braco_cadeira = box {<0,0,0>,<1,0.5,1> texture {tx_fosca} }

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

#declare meu_retalho = retalho (<0,0,0>, <0,0,1>, <0,1,0>, <0,1,1>, <1,0,0>, <1,0,1>, <1,1,0>, <1,1,1>, <0,0,2>, <0,1,2>, <0,2,2>, <2,2,2>, <2,0,1>, <2,0,0>, <2,2,1>, <1,2,1>, 0.000000001, tx_fosca, tx_plastico)

#declare h = 3;
#declare e = 1;
#declare l = 3;
#declare borda_inferior = array[4] {<0,0,0>,<0,l/3,0>,<0,2*l/3,0>,<0,l,0>}

#macro linha_acima_borda (ff)
        #declare lab = array[4] {<0,0,h/3>,<1*ff+0.1,l/3,h/3>,<1*ff+0.1,2*l/3,h/3>,<0,l,h/3>}
#end

#macro linha_baixo_borda (ff)
        #declare lbb = array[4] {<h/3,0,0>,<h/3,l/3,0.9*ff+0.1>,<h/3,2*l/3,0.9*ff+0.1>,<h/3,l,0>}
#end

#macro encosto_frente (ff,m)
        linha_acima_borda (ff)
        linha_baixo_borda (ff)
        #declare S = array[4][4]
        {
        {<0,0,h>,<0,l/3,h>,<0,2*l/3,h>,<0,l,h>},
        {<0,0,2*h/3>,<1*ff+0.1,l/3,2*h/3>,<1*ff+0.1,2*l/3,2*h/3>,<0,l,2*h/3>},
        {lab[0],lab[1],lab[2],lab[3],},
        {(lab[0]+lbb[0])/2,(lab[1]+lbb[1])/2,(lab[2]+lbb[2])/2,(lab[3]+lbb[3])/2} //para junta suave
        }

        retalho(S[0][0],S[0][1],S[0][2],S[0][3],S[1][0],S[1][1],S[1][2],S[1][3],S[2][0],S[2][1],S[2][2],S[2][3],S[3][0],S[3][1],S[3][2],S[3][3], 0.001,         tx_fosca, tx_plastico)
#end

#macro acento_cima (ff, m)
        linha_acima_borda (ff)
        linha_baixo_borda (ff)
        #declare S = array[4][4]
        {
        {(lab[0]+lbb[0])/2,(lab[1]+lbb[1])/2,(lab[2]+lbb[2])/2,(lab[3]+lbb[3])/2}, //para junta suave
        {<h/3,0,0>,<h/3,l/3,0.9*ff+0.1>,<h/3,2*l/3,0.9*ff+0.1>,<h/3,l,0>},
        {<2*h/3,0,0>,<2*h/3,l/3,0.9*ff+0.1>,<2*h/3,2*l/3,0.9*ff+0.1>,<2*h/3,l,0>},
        {<h,0,0>,<h,l/3,0>,<h,2*l/3,0>,<h,l,0>}
        }

        retalho(S[0][0],S[0][1],S[0][2],S[0][3],S[1][0],S[1][1],S[1][2],S[1][3],S[2][0],S[2][1],S[2][2],S[2][3],S[3][0],S[3][1],S[3][2],S[3][3], 0.001,         tx_fosca, tx_plastico)
#end

#macro acento_baixo (ff, m)
        #declare S = array[4][4]
        {
        {m[0],m[1],m[2],m[3]},
        {<h/3,0,0>,<h/3,l/3,-0.9*ff-0.1>,<h/3,2*l/3,-0.9*ff-0.1>,<h/3,l,0>},
        {<2*h/3,0,0>,<2*h/3,l/3,-0.9*ff-0.1>,<2*h/3,2*l/3,-0.9*ff-0.1>,<2*h/3,l,0>},
        {<h,0,0>,<h,l/3,0>,<h,2*l/3,0>,<h,l,0>}
        }

        retalho(S[0][0],S[0][1],S[0][2],S[0][3],S[1][0],S[1][1],S[1][2],S[1][3],S[2][0],S[2][1],S[2][2],S[2][3],S[3][0],S[3][1],S[3][2],S[3][3], 0.001,         tx_fosca, tx_plastico)
#end

#include "eixos.inc"

union{
  object{ eixos(3.00) }
  object{ chao  translate < 0,0,-5 > texture{ tx_xadrez } }

  object { encosto_frente (1,borda_inferior) }
  object { acento_cima (1,borda_inferior) }
  object { acento_baixo (1,borda_inferior) }

  object { encosto_frente (0,borda_inferior) translate <0,-4,0> }
  object { acento_cima (0,borda_inferior) translate <0,-4,0>}
  object { acento_baixo (0,borda_inferior) translate <0,-4,0>}
}

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