// Last edited on 2019-07-17 11:02:37 by stolfilocal
// Processed by remove-cam-lights

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 p5 = union {
  object{sphere{<0,0,0>, 20 texture{tx_plastico}}}
  object{cylinder{<10,0,0>, <100,0,0>, 20 texture{tx_fosca}}}
}

#macro art4 (et)
  #declare p4 = union {
    object{sphere{<0,0,0>, 20 texture{tx_plastico}}}
    object{cylinder{<10,0,0>, <100,0,0>, 20 texture{tx_fosca}}}
    object{p5 rotate <0,et,0> translate <100,0,0>}
  }
#end

#macro art3 (dt, et)
  #declare p3 = union {
    object{sphere{<0,0,0>, 20 texture{tx_plastico}}}
    object{cylinder{<10,0,0>, <100,0,0>, 20 texture{tx_fosca}}}
    art4(et)
    object{p4 rotate <0,dt,0> translate <100,0,0>}
  }
#end

#macro art2 (ct,dt,et)
  #declare p2 = union {
    object{sphere{<0,0,0>, 20 texture{tx_plastico}}}
    object{cylinder{<10,0,0>, <100,0,0>, 20 texture{tx_fosca}}}
    art3(dt,et)
    object{p3 rotate <0,ct,0> translate <100,0,0>}
  }
#end

#macro art1 (bt,ct,dt,et)
  #declare p1 = union {
    object{sphere{<0,0,0>, 20 texture{tx_plastico}}}
    object{cylinder{<10,0,0>, <100,0,0>, 20 texture{tx_fosca}}}
    art2(ct,dt,et)
    object{p2 rotate <0,bt,0> translate <100,0,0>}
  }
#end

#declare at = array[6];
#declare bt = array[6];
#declare ct = array[6];
#declare dt = array[6];
#declare et = array[6];

#declare at[0] = 30;
#declare at[1] = 30;
#declare at[2] = 30;
#declare at[3] = 30;
#declare at[4] = 30;
#declare at[5] = 30;

#declare bt[0] = 45;
#declare bt[1] = 45;
#declare bt[2] = 45;
#declare bt[3] = -20;
#declare bt[4] = 45;
#declare bt[5] = 45;

#declare ct[0] = 50;
#declare ct[1] = 50;
#declare ct[2] = 50;
#declare ct[3] = 50;
#declare ct[4] = 50;
#declare ct[5] = 50;

#declare dt[0] = 15;
#declare dt[1] = 30;
#declare dt[2] = 40;
#declare dt[3] = 45;
#declare dt[4] = 50;
#declare dt[5] = -30;

#declare et[0] = 45;
#declare et[1] = 45;
#declare et[2] = 45;
#declare et[3] = 45;
#declare et[4] = 45;
#declare et[5] = 45;

#macro corpo (at,bt,ct,dt,et)
   object{cylinder{<-300,0,0>, <300,0,0>, 100 texture{tx_fosca}}}
   object{cone{<300,0,0>, 100, <450,0,0>, 0   texture{tx_fosca}}}
   art1 (bt[0],ct[0],dt[0],et[0])
   object{p1 rotate <0,at[0],90>   translate <-200,110,0>}
   art1 (bt[1],ct[1],dt[1],et[1])
   object{p1 rotate <0,at[1],90> translate <0,110,0>}
   art1 (bt[2],ct[2],dt[2],et[2])
   object{p1 rotate <0,at[2],90> translate <200.110,0>}
   art1 (bt[3],ct[3],dt[3],et[3])
   object{p1 scale <-1,1,1> rotate <0,at[3],90> translate <-200,-110,0>}
   art1 (bt[4],ct[4],dt[4],et[4])
   object{p1 scale <-1,1,1> rotate <0,at[4],90> translate <0,-110,0>}
   art1 (bt[5],ct[5],dt[5],et[5])
   object{p1 scale <-1,1,1> rotate <0,at[5],90> translate <200,-110,0>}
#end

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

corpo (at,bt,ct,dt,et)

#include "eixos.inc"

#include "camlight.inc"
#declare centro_cena = < 200.00, 0.00, 1.00 >;
#declare raio_cena = 650;
#declare dir_camera = < 14.00, 7.00, 4.00 >;
#declare dist_camera = 5*raio_cena;
#declare intens_luz = 1.20;
camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)