// Last edited on 2009-07-22 14:55:43 by stolfilocal
// Processed by remove-cam-lights

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

#declare raio = 2.000;

#declare tinta_A =
  texture {
    pigment { color rgb < 1.00, 0.00, 0.00 > }
    finish { diffuse 0.8 specular 0.1 roughness 0.005 ambient 0.1 }
  }

#declare tinta_AA =
  texture {
    pigment { color rgb < 0.50, 0.50, 0.50 > }
    finish { diffuse 0.8 specular 0.1 roughness 0.005 ambient 0.1 }
  }

#declare tinta_B =
  texture {
    pigment { color rgb < 0.00, 1.00, 0.00 > }
    finish { diffuse 0.8 specular 0.1 roughness 0.005 ambient 0.1 }
  }

#declare tinta_C =
  texture {
    pigment { color rgb < 0.30, 0.30, 0.30 > }
    finish { diffuse 0.8 specular 0.1 roughness 0.005 ambient 0.1 }
  }

#declare tinta_D =
  texture {
    pigment { color rgb < 1.00, 0.00, 0.00 > filter 0.5}
    finish { diffuse 0.8 specular 0.1 roughness 0.005 ambient 0.1 }
  }
   
#declare tamanho = 50;
#declare caixaBasica =
  box {
    < +0.00, +0.00, +0.00 >,
    < +tamanho, +tamanho, +tamanho >
    texture { tinta_D }
  }

#declare elementoCompleto =
 union {
object { caixaBasica translate <tamanho,0,tamanho> } 
object { caixaBasica translate <-tamanho,0,tamanho> } 
object { caixaBasica translate <tamanho,0,-tamanho> } 
object { caixaBasica translate <-tamanho,0,-tamanho> } 
object { caixaBasica} 
}

#declare e = 0.1;
#declare tt = 1/4;

#macro sierp(n)
  #if (n = 0)
  box {< +0.00, +0.00, +0.00 >, < +tamanho, +tamanho, +tamanho >}
 #else
  union{
   object {sierp (n-1) translate <tamanho,0,tamanho>}
   object {sierp (n-1) translate <-tamanho,0,tamanho>}
   object {sierp (n-1) translate <tamanho,0,-tamanho>}
   object {sierp (n-1) translate <-tamanho,0,-tamanho>}
   object {sierp (n-1) translate <0,0,0>}
   texture { tinta_D }
   scale <tt,tt,tt>
   }
 #end
#end

#macro sierp2(n)
  #if (n = 0)
  object {elementoCompleto}
 #else
  union{
   object {sierp2 (n-1) translate <tamanho,0,tamanho>}
   object {sierp2 (n-1) translate <-tamanho,0,tamanho>}
   object {sierp2 (n-1) translate <tamanho,0,-tamanho>}
   object {sierp2 (n-1) translate <-tamanho,0,-tamanho>}
   object {sierp2 (n-1) translate <0,0,0>}
   texture { tinta_D }
   scale <n/5,n/5,n/5>

   }
 #end
#end

#macro sierp3(n)
  #if (n = 0)
  box {< +0.00, +0.00, +0.00 >, < +tamanho, +tamanho, +tamanho >}
 #else
  union{
   object {sierp3 (n-1) translate <tamanho,tamanho,tamanho>}
   object {sierp3 (n-1) translate <-tamanho,tamanho,tamanho>}
   object {sierp3 (n-1) translate <tamanho,tamanho,-tamanho>}
   object {sierp3 (n-1) translate <-tamanho,tamanho,-tamanho>}
   object {sierp3 (n-1) translate <tamanho,-tamanho,tamanho>}
   object {sierp3 (n-1) translate <-tamanho,-tamanho,tamanho>}
   object {sierp3 (n-1) translate <tamanho,-tamanho,-tamanho>}
   object {sierp3 (n-1) translate <-tamanho,-tamanho,-tamanho>}
   object {sierp3 (n-1)}
   texture { tinta_D }
   scale <tt,tt,tt>
   }
 #end
#end

union {
object { sierp3(3) }
}

// Original camera parameters:
// #local cam_ctr = <0,0,0>
// #local cam_vec = <25.00,-80.00,45.00>
// #local cam_sky = z

#include "camlight.inc"
camlight(<0,0,0>,<10,4,4>,100.0,z,1.0)