// Last edited on 2023-12-28 09:04:09 by stolfi

#include "eixos.inc"
#include "retalho.inc"

// Raio da grade debug:
// #declare rdb = 0.05;
#declare rdb = 0;

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

#declare roleta = seed(1246553);

#macro poltrona()
  #declare b = array[4][4];

  #declare b[0][1] = <-2.5,-3,-2>;
  #declare b[0][2] = < 2.5,-4,2>;
  #declare b[0][3] = < 2,-2,-0.5>;

  #declare b[1][1] = <-3,-1,-3>;
  #declare b[1][2] = < 2.5,-1,2>;
  #declare b[1][3] = < 3,-1,-1>;

  #declare b[2][1] = <-3, 1,-3>;
  #declare b[2][2] = < 2.5, 1,2>;
  #declare b[2][3] = < 3, 1,-1>;

  #declare b[3][1] = <-2.5, 3,-2>;
  #declare b[3][2] = < 2.5, 4,2>;
  #declare b[3][3] = < 2, 2,-0.5>;

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

  #declare e[0][1] = <-3.5,       -3, 2>;
  #declare e[0][2] = <-4  ,       -3, 5>;
  #declare e[0][3] = <-4.5,       -2, 7.5>;

  #declare e[1][1] = <-4  ,       -1, 2>;
  #declare e[1][2] = <-4.5,       -1, 5>;
  #declare e[1][3] = <-4.5,       -1, 8>;

  #declare e[2][1] = <-4  ,        1, 2>;
  #declare e[2][2] = <-4.5,        1, 5>;
  #declare e[2][3] = <-4.5,        1, 8>;

  #declare e[3][1] = <-3.5,        3, 2>;
  #declare e[3][2] = <-4  ,        3, 5>;
  #declare e[3][3] = <-4.5,        2, 7.5>;

  #declare e[0][0] = (e[0][1] + b[0][1])/2;
  #declare e[1][0] = (e[1][1] + b[1][1])/2;
  #declare e[2][0] = (e[2][1] + b[2][1])/2;
  #declare e[3][0] = (e[3][1] + b[3][1])/2;

  #declare b[0][0] = e[0][0]; 
  #declare b[1][0] = e[1][0]; 
  #declare b[2][0] = e[2][0]; 
  #declare b[3][0] = e[3][0];

  union{
    object{ retalho(b, rdb, cret0, 3) }
    object{ retalho(e, rdb, cret1, 3) }
  }
#end

#declare cmin = < -6, -5, -4 >;
#declare cmax = < +4, +5, +9 >;
object{ poltrona() }

#include "eixos.inc"
#if (rdb > 0) object{ eixos(5.0) } #end

#include "gaiola.inc"
#if (rdb > 0) object{ gaiola(cmin,cmax) } #end
#if (rdb = 0) object{ gaipiso(cmin,cmax) } #end

#declare centro_cena = (cmin + cmax)/2;
#declare raio_cena = 0.65*vlength(cmax-cmin);
#declare dist_camera = 7*raio_cena;

#include "camlight.inc"
#declare dir_camera = < 7, 5, 3 >;
#declare intens_luz = 1.20;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)