// Last edited on 2009-11-23 16:54:33 by stolfilocal
// Processed by remove-cam-lights

#macro eixo(ponta,cor,nome)
  union{
    sphere{ <0,0,0>, 0.02 }
    cylinder{ <0,0,0>, 0.91*ponta, 0.02 }
    cone{ 0.90*ponta, 0.06, ponta, 0.00 }
    texture{ pigment{ color rgb cor } finish{ ambient 0.5 diffuse 0.5 } }
  }
#end
#macro eixos(tamanho)
  union{
    object{ eixo( <tamanho,0,0>, <1.0,0.2,0.2>, "X") }
    object{ eixo( <0,tamanho,0>, <0.0,0.8,0.0>, "Y") }
    object{ eixo( <0,0,tamanho>, <0.3,0.3,1.0>, "Z") }
  }
#end

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_textura =
  texture{
    pigment{ color rgb < 0, 0, 0 > }
    finish{ diffuse 0.3 ambient 0.2 reflection 0.5*<1,1,1> }
  }

#declare tx_fosca =
  texture{
    pigment{ color rgb < 1.00, 0.80, 0.10 > }
    finish{ diffuse 0.9 ambient 0.1 }
  }

#declare tx_parede =
  texture{
    pigment{ color rgb < 0.9, 0.9, 0.9 > }
    finish{ diffuse 0.9 ambient 0.1 }
  }

#declare tx_espelho =
  texture{
    pigment{ color rgb < 1.00, 0.90, 0.70 > }
    finish{ diffuse 0.1 reflection 0.8*< 1.00, 0.90, 0.70 > ambient 0.1 }
  }

#declare tx_vidro2 =
  texture{
    pigment{ color rgb < 0.97, 0.98, 1.00 > filter 0.70 }
    finish{ diffuse 0.03 reflection 0.25 ambient 0.02 specular 0.25 roughness 0.005 }
  }

#declare tx_vidro =
  texture{
    pigment{ color rgb < 0.99, 1, 1.00 > filter 0.70 }
    finish{ diffuse 0.03 reflection 0.25 ambient 0.02 specular 0.25 roughness 0.005 }
  }

#declare raio = 2.000;

#macro torre1()
        #local p1 = <1,15>;
        #local p3 = <2,12>;
        #local p2 = (p1+p3)/2;
        #local p5 = <1,10>;
        #local p4 = (p5+p3)/2;

        #local p7 = <2,9>;
        #local p6 = (p5+p7)/2;
        #local p9 = <1,8>;
        #local p8 = (p9+p7)/2;

        #local p10 = p9 + <0,2>;
        #local p11 = p10 + <0,2>;
        #local p12 = p11 + <0,2>;

        #local p13 = p12 + <0.75,.5>;
        #local p14 = p13 + <1.5,1>;
        #local p15 = p12 + <0.75,.5>;

        #local d1 = <1,15>;
        #local d2 = <1.3,14>;
        #local d3 = <1.6,13>;
        #local d6 = <1.6,12>;
        #local d4 = (d3+d6)/2;
        #local d5 = d4;

        #local d7 = <1.3,11>;
        #local d8 = <1,10>;
        #local d9 = d8;
        #local d11 = <1,10>;
        #local d10 = <1,10>;

        lathe
        {
                bezier_spline
                24,

                d1,d2,d3,d4,d5,d6,d7,d8,d9,p6,p6,p7,p7,p8,p8,p9,p9,p10,p11,p12,p12,p13,p14,p15

                texture{ tx_fosca }
        }
        translate <3,-10.3,-4.5>
        rotate -90*x
#end

#macro torre3()
        #local p1 = <0,0>;
        #local p2 = <1,1.5>;
        #local p3 = <2,3>;
        #local p6 = <2,6>;
        #local p7 = <1,7.5>;
        #local p8 = <0,9>;

        #local p4 = (p3+p6)/2;
        #local p5 = p4;

        lathe
        {
                bezier_spline
                8,
                p1,p2,p3,p4,p5,p6,p7,p8
                texture{ tx_fosca }
        }
#end

#declare torre2 =
prism
{
        linear_sweep
        bezier_spline
        0,
        6,
        16,
        <0,0>,<2,1>,<2,1>,<4,0>,<4,0>,<3,2>,<3,2>,<4,4>,<4,4>,<2,3>,<2,3>,<0,4>,<0,4>,<1,2>,<1,2>,<0,0>
        texture{ tx_fosca }
}

#declare teto = box { <0,0>, <11,11> texture { tx_fosca } }

union
{
        object{ torre1() }
        object{ torre2 rotate -90*x rotate 45*z translate <0,6,2> }
        object{ torre3() rotate -90*x translate <-1,2,2> }
        object{ teto translate <0,0,3> }

}

// Original camera parameters:
// #local cam_ctr = <0.00,3.00,0.00>
// #local cam_loc = <14.00,10.00,3.50>
// #local cam_vec = (<14.00,10.00,3.50>-<0.00,3.00,0.00>)
// #local cam_sky = z

#include "camlight.inc"
camlight(<0.00,3.00,0.00>,12.00,<10,3,2>,40.039,z,1.2)