// Last edited on 2023-12-28 15:31:46 by stolfi

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

background{ color rgb < 0.90, 0.80, 0.85 > }

#include "retalho.inc"

#macro poltronaGamer(c0,c1,c2,c3,c4,c5)
  union {
    #local cabeca = array[4][4];
    #local encosto = array[4][4];
    #local pes_pessoa = array[4][4];
    #local pe1_cadeira = array[4][4];
    #local pe2_cadeira = array[4][4];
    #local apoio = array[4][4];

    #local cabeca[0][0] = <0,0,3>;
    #local cabeca[0][1] = <0,1,3>;
    #local cabeca[0][2] = <0,2,3>;
    #local cabeca[0][3] = <0,3,3>;
    #local cabeca[1][0] = <1,0,6>;
    #local cabeca[1][1] = <1,1,6>;
    #local cabeca[1][2] = <1,2,6>;
    #local cabeca[1][3] = <1,3,6>;
    #local cabeca[2][0] = <2,0,0>;
    #local cabeca[2][1] = <2,1,0>;
    #local cabeca[2][2] = <2,2,0>;
    #local cabeca[2][3] = <2,3,0>;
    #local cabeca[3][0] = <4,0,2.5>;
    #local cabeca[3][1] = <4,1,2.5>;
    #local cabeca[3][2] = <4,2,2.5>;
    #local cabeca[3][3] = <4,3,2.5>;

    #local encosto[0][0] = <4,0,2.5>;
    #local encosto[0][1] = <4,1,2.5>;
    #local encosto[0][2] = <4,2,2.5>;
    #local encosto[0][3] = <4,3,2.5>;
    #local encosto[1][0] = <5,0,3.5>;
    #local encosto[1][1] = <5,1,3.5>;
    #local encosto[1][2] = <5,2,3.5>;
    #local encosto[1][3] = <5,3,3.5>;
    #local encosto[2][0] = <6,0,2>;
    #local encosto[2][1] = <6,1,2>;
    #local encosto[2][2] = <6,2,2>;
    #local encosto[2][3] = <6,3,2>;
    #local encosto[3][0] = <7,0,1.5>;
    #local encosto[3][1] = <7,1,1.5>;
    #local encosto[3][2] = <7,2,1.5>;
    #local encosto[3][3] = <7,3,1.5>;

    #local pes_pessoa[0][0] = <7,0,1.5>;
    #local pes_pessoa[0][1] = <7,1,1.5>;
    #local pes_pessoa[0][2] = <7,2,1.5>;
    #local pes_pessoa[0][3] = <7,3,1.5>;
    #local pes_pessoa[1][0] = <7.5,0,1>;
    #local pes_pessoa[1][1] = <7.5,1,1>;
    #local pes_pessoa[1][2] = <7.5,2,1>;
    #local pes_pessoa[1][3] = <7.5,3,1>;
    #local pes_pessoa[2][0] = <7,0,0.5>;
    #local pes_pessoa[2][1] = <7,1,0.5>;
    #local pes_pessoa[2][2] = <7,2,0.5>;
    #local pes_pessoa[2][3] = <7,3,0.5>;
    #local pes_pessoa[3][0] = <6.5,0,0.25>;
    #local pes_pessoa[3][1] = <6.5,1,0.25>;
    #local pes_pessoa[3][2] = <6.5,2,0.25>;
    #local pes_pessoa[3][3] = <6.5,3,0.25>;


    #local pe1_cadeira[0][0] = <6.5,0,0.25>;
    #local pe1_cadeira[0][1] = <6.5,1,0.25>;
    #local pe1_cadeira[0][2] = <6.5,2,0.25>;
    #local pe1_cadeira[0][3] = <6.5,3,0.25>;
    #local pe1_cadeira[1][0] = <6,0,0.15>;
    #local pe1_cadeira[1][1] = <6,1,0.15>;
    #local pe1_cadeira[1][2] = <6,2,0.15>;
    #local pe1_cadeira[1][3] = <6,3,0.15>;
    #local pe1_cadeira[2][0] = <5.5,0,0.05>;
    #local pe1_cadeira[2][1] = <5.5,1,0.05>;
    #local pe1_cadeira[2][2] = <5.5,2,0.05>;
    #local pe1_cadeira[2][3] = <5.5,3,0.05>;
    #local pe1_cadeira[3][0] = <5,0,0>;
    #local pe1_cadeira[3][1] = <5,1,0>;
    #local pe1_cadeira[3][2] = <5,2,0>;
    #local pe1_cadeira[3][3] = <5,3,0>;

    #local pe2_cadeira[0][0] = <5,0,0>;
    #local pe2_cadeira[0][1] = <5,1,0>;
    #local pe2_cadeira[0][2] = <5,2,0>;
    #local pe2_cadeira[0][3] = <5,3,0>;
    #local pe2_cadeira[1][0] = <4,0,0>;
    #local pe2_cadeira[1][1] = <4,1,0>;
    #local pe2_cadeira[1][2] = <4,2,0>;
    #local pe2_cadeira[1][3] = <4,3,0>;
    #local pe2_cadeira[2][0] = <3,0,0>;
    #local pe2_cadeira[2][1] = <3,1,0>;
    #local pe2_cadeira[2][2] = <3,2,0>;
    #local pe2_cadeira[2][3] = <3,3,0>;
    #local pe2_cadeira[3][0] = <2,0,0>;
    #local pe2_cadeira[3][1] = <2,1,0>;
    #local pe2_cadeira[3][2] = <2,2,0>;
    #local pe2_cadeira[3][3] = <2,3,0>;

    #local apoio[0][0] = <2,0,0>;
    #local apoio[0][1] = <2,1,0>;
    #local apoio[0][2] = <2,2,0>;
    #local apoio[0][3] = <2,3,0>;
    #local apoio[1][0] = <0.5,0,0.5>;
    #local apoio[1][1] = <0.5,1,0.5>;
    #local apoio[1][2] = <0.5,2,0.5>;
    #local apoio[1][3] = <0.5,3,0.5>;
    #local apoio[2][0] = <0.25,0,1>;
    #local apoio[2][1] = <0.25,1,1>;
    #local apoio[2][2] = <0.25,2,1>;
    #local apoio[2][3] = <0.25,3,1>;
    #local apoio[3][0] = <0,0,3>;
    #local apoio[3][1] = <0,1,3>;
    #local apoio[3][2] = <0,2,3>;
    #local apoio[3][3] = <0,3,3>;


    object{ retalho(cabeca,      rdb, c0, 3) }
    object{ retalho(encosto,     rdb, c1, 3) }
    object{ retalho(pes_pessoa,  rdb, c2, 3) }
    object{ retalho(pe1_cadeira, rdb, c3, 3) }
    object{ retalho(pe2_cadeira, rdb, c4, 3) }
    object{ retalho(apoio,       rdb, c5, 3) }
  }
#end

#macro poltrona_completa()
  union{
    object{ poltronaGamer(cret0,cret1,cret2,cret3,cret4,cret5) }
    object{ poltronaGamer(cret2,cret3,cret4,cret5,cret6,cret7) scale <+1,-1,+1> }
  }
#end

#declare duas = false;

#declare cmin = < -1.0, -4.0, -1.0 >;
#declare cmax = < +9.0, +4.0, +7.0 >;

object{ poltrona_completa() }

#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.55*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)