// Last edited on 2023-12-30 05:51:29 by stolfi
#version 3.7; global_settings { assumed_gamma 2.2 }

#include "direcao_do_sol.inc"
#include "parametros.inc"

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

#declare branco = 
  texture{
    pigment{ color rgb < 1 1 1 > }
    finish{ diffuse 0.5 ambient 0.5 reflection 0.25}
  }
  
#declare preto = 
  texture{
    pigment{ color rgb < 0 0 0 > }
    finish{ diffuse 0.5 ambient 0.5  reflection 0.25}
  }

#declare vermelho=
  texture{
    pigment{ color rgb < 0.9 0.1 0.1 > }
    finish{ diffuse 0.3 ambient 0.3  reflection 0.25}
  }
  
#declare azul=
  texture{
    pigment{ color rgb < 0.1 0.1 0.9 > }
    finish{ diffuse 0.5 ambient 0.5  reflection 0.25}
  }
#declare verde=
  texture{
    pigment{ color rgb < 0.1 0.9 0.1 > }
    finish{ diffuse 0.5 ambient 0.5  reflection 0.25}
  }
  
#declare roxo=
  texture{
    pigment{ color rgb < 0.9 0.1 0.9 > }
    finish{ diffuse 0.5 ambient 0.5  reflection 0.25}
  }
  
#declare tx_panel=
  texture{
    pigment{ color rgb <1,0,0>}
    finish{ ambient 1 diffuse 0}
  }

#macro painel(ang)
  polygon{
    4,
    <10,0,0>,
    <2,4,0>,
    <2*cos(2*pi/5), 4, 2*sin(2*pi/5)>,
    <10*cos(2*pi/5), 0, 10*sin(2*pi/5)>
    scale <0.9,0.9,0.9>
    translate < sqrt(2)/2*cos(2*pi/10), sqrt(2)/2 ,sqrt(2)/2*sin(2*pi/10) >
    rotate ang*y
    texture{ tx_panel }
  }
#end

union{
  prism {
    conic_sweep
    linear_spline
    0.2, // height 1
    1, // height 2
    6, // the number of points making up the shape...
    <10,0>,
    <10 *cos(2*pi/5),10*sin(2*pi/5)>,
    <10 *cos(2*pi*2/5),10*sin(2*pi*2/5)>,
    <10 *cos(2*pi*3/5),10*sin(2*pi*3/5)>,
    <10 *cos(2*pi*4/5),10*sin(2*pi*4/5)>,
    <10,0>
    rotate <180, 0, 0>
    translate <0, 1, 0>
    scale <1, 4, 1>
    pigment{ color rgb < 0.300, 0.400, 1.000 > }
  }
  polygon{
    5,
    <1,4,0>,
    <1 *cos(2*pi/5),4,1*sin(2*pi/5)>,
    <1 *cos(2*pi*2/5),4,1*sin(2*pi*2/5)>,
    <1 *cos(2*pi*3/5),4,1*sin(2*pi*3/5)>, 
    <1 *cos(2*pi*4/5),4,1*sin(2*pi*4/5)> 
    texture{tx_panel}
  }

  // painel lateral
  object{ painel(0) }
  object{ painel(72) }
  object{ painel(144) }
  object{ painel(216) }
  object{ painel(288) }

  rotate 90*x
}

#local dir_norte = < 0.0, cos(radians(lat)), sin(radians(lat)) >; 
#local dir_sol = direcao_do_sol(lat, lon, mes, hora);

#include "eixos.inc"
#local cmp_eixos = 5.0;
// object{ eixos(cmp_eixos) }

#declare cmin = < -8.5, -9.9, 00.0 >;
#declare cmax = < +9.9, +9.9, +5.0 >;
#declare centro_cena = (cmin + cmax)/2;

#include "gaiola.inc"
// object{ gaiola(cmin,cmax) }
object{ gaichao(cmin,cmax) }

#include "camsol.inc"
#declare raio_cena = 0.65*vlength(cmax-cmin);
#declare intens_luz = 1.20;
// #declare vista = 3;
camsol(centro_cena, raio_cena, vista, dir_norte, dir_sol, intens_luz)