// Last edited on 2023-12-27 23:58:52 by stolfi

#include "retalho.inc"

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

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

#macro encosto_esq()
  #local P1= array[4] {<4,4,6>,<4,2,6>,<2,0,6>,<0,0,6>};
  #local P2= array[4] {<4,4,4>,<4,2,4>,<2,0,4>,<0,0,4>};
  #local P3= array[4] {<4,4,2>,<4,2,2>,<2,0,2>,<0,0,2>};
  #local P4= array[4] {<4,6,0>,<4,4,0>,<2,2,0>,<0,2,0>};
  #local P= array[4] {P1,P2,P3,P4};
  object{retalho(P, rdb, cret0, 3)}
#end

#macro encosto_dir()
  #local P1= array[4] {<-4,4,6>,<-4,2,6>,<-2,0,6>,<0,0,6>};
  #local P2= array[4] {<-4,4,4>,<-4,2,4>,<-2,0,4>,<0,0,4>};
  #local P3= array[4] {<-4,4,2>,<-4,2,2>,<-2,0,2>,<0,0,2>};
  #local P4= array[4] {<-4,6,0>,<-4,4,0>,<-2,2,0>,<0,2,0>};
  #local P= array[4] {P1,P2,P3,P4};
  object{retalho(P, rdb, cret1, 3)}
#end

#macro assento_esq()
  #local P1= array[4] {<4,6,0>,<4,4,0>,<2,2,0>,<0,2,0>};
  #local P2= array[4] {<4,8,-2>,<4,6,-2>,<2,4,-2>,<0,4,-2>};
  #local P3= array[4] {<4,10,-2>,<4,8,-2>,<2,6,-2>,<0,6,-2>};
  #local P4= array[4] {<4,12,0>,<4,12,0>,<2,12,0>,<0,12,0>};
  #local P= array[4] {P1,P2,P3,P4};
  object{retalho(P, rdb, cret3, 3)}
#end

#macro assento_dir()
  #local P1= array[4] {<-4,6,0>,<-4,4,0>,<-2,2,0>,<0,2,0>};
  #local P2= array[4] {<-4,8,-2>,<-4,6,-2>,<-2,4,-2>,<0,4,-2>};
  #local P3= array[4] {<-4,10,-2>,<-4,8,-2>,<-2,6,-2>,<0,6,-2>};
  #local P4= array[4] {<-4,12,0>,<-4,12,0>,<-2,12,0>,<0,12,0>};
  #local P= array[4] {P1,P2,P3,P4};
  object{retalho(P, rdb, cret4, 3)}
#end

#macro apoio_pe_esq()
  
  #local P1= array[4] {<4,12,0>,<4,12,0>,<2,12,0>,<0,12,0>};
  #local P2= array[4] {<4,14,2>,<4,14,2>,<2,14,2>,<0,14,2>};
  #local P3= array[4] {<4,16,-4>,<4,16,-4>,<2,16,-4>,<0,16,-4>};
  #local P4= array[4] {<4,18,-2>,<4,18,-2>,<2,18,-2>,<0,18,-2>};
  #local P= array[4] {P1,P2,P3,P4};
  object{retalho(P, rdb, cret5, 3)}
#end

#macro apoio_pe_dir()
  
  #local P1= array[4] {<-4,12,0>,<-4,12,0>,<-2,12,0>,<0,12,0>};
  #local P2= array[4] {<-4,14,2>,<-4,14,2>,<-2,14,2>,<0,14,2>};
  #local P3= array[4] {<-4,16,-4>,<-4,16,-4>,<-2,16,-4>,<0,16,-4>};
  #local P4= array[4] {<-4,18,-2>,<-4,18,-2>,<-2,18,-2>,<0,18,-2>};
  #local P= array[4] {P1,P2,P3,P4};
  object{retalho(P, rdb, cret6, 3)}
#end

#macro cadeira()
  union{ 
    object{ encosto_esq() }
    object{ encosto_dir() }
    object{ assento_esq() }
    object{ assento_dir() }
    object{ apoio_pe_esq() }
    object{ apoio_pe_dir() }
  }
#end

#declare cmin = < -6,  -1,  -5.5 >;
#declare cmax = < +6, +19,  +7.5 >;
object{ cadeira() }

#include "eixos.inc"
// #if (rdb > 0) object{ eixos( 10.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)