// Last edited on DATE TIME by USER
// Processed by remove-cam-lights

  

  

  

  

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

#declare lado_quadrado = 8.0;

#declare vao = 2.0;

#declare resize = 0.4;

#declare uma_torre =
  box { < (-1)*lado_quadrado, (-1)*lado_quadrado, 5 >, < lado_quadrado, lado_quadrado, 6 > }

#declare base_torres =
  union {
    object { uma_torre }
    object { uma_torre translate < (-2)*(lado_quadrado + vao), 0, 0 > }
    object { uma_torre translate < 0, (-2)*(lado_quadrado + vao), 0 > }
    object { uma_torre translate < (-2)*(lado_quadrado + vao), (-2)*(lado_quadrado + vao), 0 > }
  }
#macro torres(n)
  #if (n=0)
    object { base_torres }
  #else
    union {
      object {
        torres(n-1)
        scale < resize, resize, 1 >
        translate < (vao + lado_quadrado)*resize, (vao + lado_quadrado)*resize, 1 >
          texture {
            pigment { color rgb < 1-0.23/n, 1-0.23/n, 1-0.23/n > }
            finish { diffuse 0.8 specular 0.1 roughness 0.005 ambient 0.1 }
          }
      }
      object {
        torres(n-1)
        scale < resize, resize, 1 >
        translate < (vao + lado_quadrado)*resize, (vao + lado_quadrado)*resize, 1 >
        translate < (-2)*(lado_quadrado + vao), 0, 0 >
          texture {
            pigment { color rgb < 1-0.23/n, 1-0.23/n, 1-0.23/n > }
            finish { diffuse 0.8 specular 0.1 roughness 0.005 ambient 0.1 }
          }
      }
      object {
        torres(n-1)
        scale < resize, resize, 1 >
        translate < (vao + lado_quadrado)*resize, (vao + lado_quadrado)*resize, 1 >
        translate < 0, (-2)*(lado_quadrado + vao), 0 >
          texture {
            pigment { color rgb < 1-0.23/n, 1-0.23/n, 1-0.23/n > }
            finish { diffuse 0.8 specular 0.1 roughness 0.005 ambient 0.1 }
          }
      }
      object {
        torres(n-1)
        scale < resize, resize, 1 >
        translate < (vao + lado_quadrado)*resize, (vao + lado_quadrado)*resize, 1 >
        translate < (-2)*(lado_quadrado + vao), (-2)*(lado_quadrado + vao), 0 >
          texture {
            pigment { color rgb < 1-0.23/n, 1-0.23/n, 1-0.23/n > }
            finish { diffuse 0.8 specular 0.1 roughness 0.005 ambient 0.1 }
          }
      }
    }
  #end 
#end   

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

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

#declare muros =
  union {
    box { < -11, -11, 0 >, < -9, +9, 5 > }
    box { < -11, +11, 0 >, < +9, +9, 5 > }
    box { < +11, +11, 0 >, < +9, -9, 5 > }
    difference {
      box { < +11, -11,  0 >, < -9, -9, 5 > }
      box { <  -1.5, -12, -1 >, < +1.5, -8, 4 > }
    }
    box { <  -1.5, -10.8, 0 >, < +1.5, -9.2, 5 > }
  }

union {
  object { muros translate < (-1)*(lado_quadrado + vao), (-1)*(lado_quadrado + vao), 0 > texture { tinta_rosa } }
  object { torres(0) texture { tinta_rosa } }
  object { torres(1) }
  object { torres(2) }
  object { torres(3) }
  object { torres(4) }

}

// Original camera parameters:
// #local cam_ctr = <-10.00,+30.00,-40.00>
// #local cam_vec = (<-10.00,-50.00,+40.00>-<-10.00,+30.00,-40.00>)
// #local cam_sky = z

#include "camlight.inc"
camlight(<-10.00,+30.00,-40.00>,<10,10,10>,20.0,z,1.0)