#include "colors.inc"
#include "metals.inc"
#include "shapes.inc"
#include "glass.inc"
#include "functions.inc"
#include "rand.inc"

camera { location <0,0,-100> look_at <0,0,0> translate <0,0,0> }  
background {color White*0.5}

global_settings { ambient_light rgb <1, 1, 1> }

light_source {<-50,0,-100> color White*2 }

// sky -------------------------------------------------
plane{<0,1,0>,1 hollow
   texture{
    pigment{ bozo turbulence 0.2
      color_map {
       [0.00 rgb <1, 0.8, 1>*0.9]
       [0.50 rgb <1, 0.8, 1>*0.9]
       [0.70 rgb <1,0.4,1>]
       [0.85 rgb <1,0.6,0.6>]
       [1.0 rgb <1,0.4,0.6>]}
      scale<1,1,1.5>*2.5
      translate<1.0,0,-1>
      }// end of pigment
    finish {ambient 1 diffuse 0}
    }// end of texture
    scale 10000
 }// end of plane

// fog on the ground --------------------------------
fog { fog_type   2
  distance   50
  color      rgb <0.6,0.2,0>
  fog_offset 0.1
  fog_alt    1.5
  turbulence 1.8
}
fog{distance 300000 color rgb <1,0.4,0.4>}


//Drone 1 ******************************************************************
//Main union
union{
#declare head_rotate = 0;

//Plasma Drill
union{

cone { <0,5,0>, 10, <0,-17,0>, 0.2
pigment { rgbt <1,0,0,0.5> } finish { F_MetalA }
}

#declare screw = 0;
#declare screws = 8;
#while(screw <= screws)

difference{
cylinder { <0,3,0>, <0,3.4,0>, 10-(screw*0.95) translate <0,-2.1*screw,0>
pigment { rgb <1,0.01,0> } finish { F_MetalA }
}
cone { <0,5,0>, 8, <0,-15,0>, 0.2 pigment { rgbt 1 } }
}

#declare screw = screw + 1;
#end

cone { <0,5,0>, 8, <0,-15,0>, 0.2 pigment { rgbt 1 }
hollow
interior
{ media
{ emission 10
  density
  { cylindrical density_map
    {
        [ 0.0 rgb <1, 0.4, 0> ]
        [ 0.3 rgb <1, 0.2, 0> ]
        [ 0.5 rgb <1, 0.5, 0> ] //yellow
        [ 0.75 rgb <.5, 0, 0> ]
        [ 1.0 rgb <0, 0, 0> ]
    }
    turbulence 0.1
    frequency 1
  }
}
}
}
scale 1.1
}
cone { <0,5,0>, 13, <0,8,0>, 14.5
texture { T_Chrome_4A }
}

union{
cylinder { <0,8,0>, <0,7,0>, 15 pigment { rgbt 0.5 } finish { F_MetalE } }
light_source { <17,6,0> color Blue*15 rotate <0,110,0> }
}
//Dome
difference {
sphere { <0,1,0>, 18 }
cylinder { <0,8,0>, <0,-25,0>, 18 }

#declare SF = 0.8;
intersection {
sphere { <0,0,0>, 10*SF }
cone { <0,10,10>*SF, 3*SF, <0,10,-10>*SF, 0.1*SF scale <0.6,1,1> }
pigment { rgb 0.5 }
rotate <0,0,15>
rotate <-35,0,0>
translate <0,6,-7>*(1/SF)
rotate <0,25,0>
rotate <-15,0,0> scale <1,1.1,1>
}
intersection {
sphere { <0,0,0>, 10*SF }
cone { <0,10,10>*SF, 3*SF, <0,10,-10>*SF, 0.1*SF scale <0.6,1,1> }
pigment { rgb 0.5 }
rotate <0,0,15>
rotate <-35,0,0>
translate <0,6,-7>*(1/SF)
rotate <0,25,0>
rotate <-15,0,0> scale <1,1.1,1>
scale <-1,0,0>
}    
texture { T_Chrome_5A } rotate <0,head_rotate,0>
}
//Laser turret
union{
difference{
sphere { <0,0,0>, 5 pigment { rgb 0.5 } finish { F_MetalD } }
cylinder { <0.5,3,0>, <-0.5,3,0>, 4 rotate <0,0,-30> }
}
sphere { <0,0,0>, 4.8 pigment { rgb 0.5 } finish { F_MetalA } }
translate <8+2,14-1,0> rotate <0,head_rotate,0>
}
//Laser turret
union{
difference{
sphere { <0,0,0>, 5 pigment { rgb 0.5 } finish { F_MetalD } }
cylinder { <0.5,3,0>, <-0.5,3,0>, 4 rotate <0,0,-30> }
}
sphere { <0,0,0>, 4.8 pigment { rgb 0.5 } finish { F_MetalA } }
translate <8+2,14-1,0>
scale <-1,0,0> rotate <0,head_rotate,0>
}

union{
difference{
difference{
cylinder { <0,0,-1>, <0,0,1>, 3 }
cylinder { <0,0,-2>, <0,0,2>, 1.5 }
}
difference{
cylinder { <0,0,-3>, <0,0,3>, 5 }
cylinder { <0,0,-2>, <0,0,2>, 3 }
translate <0,2,0>
//pigment { rgb <1,0,0> }
}
cylinder { <0,3,-4>, <0,3,4>, 1.7 }
pigment { rgb 0.7 } finish { F_MetalD }
translate <0,7,-20>
scale <1,1.1,0.5>
}

difference{
difference{
cylinder { <0,0,-0.9>, <0,0,0.9>, 2.7 }
cylinder { <0,0,-2>, <0,0,2>, 1.7 }
}
difference{
cylinder { <0,0,-3>, <0,0,3>, 5 }
cylinder { <0,0,-2>, <0,0,2>, 3 }
translate <0,2,0>
//pigment { rgb <1,0,0> }
}
cylinder { <0,2,-4>, <0,2,4>, 1.0 }
pigment { rgb 1 }
translate <0,8,-20>
scale <0.8,1.0,0.5>
}
scale <1,1.5,1>
rotate <20,0,0>
translate <0,-7.2,-12> rotate <0,head_rotate,0>
}

intersection{
difference {
cylinder { <0,0,-0.9>, <0,0,0.9>, 4}
cylinder { <0,0,-2>, <0,0,2>, 2.5 }
pigment { rgb 0.5 } finish { F_MetalD }
}
cone { <0,1,-1>, 2, <0,-5,-1>, 0.2  pigment { rgb 0.7 } finish { F_MetalD } }  
translate <0,13.5,-16> rotate <0,head_rotate,0>
}

//Ground laser
difference{
sphere { 0,1 scale <1,1000,1> hollow
pigment { rgbt 1 }
interior
{ media
{ emission 4+4
  density
  { cylindrical density_map
    {
      [ 0 rgb <0, 0, 0> ]
      [ 0.25 rgb <0, 0.4, 0.8> ]
      [ 0.5 rgb <0.2, 0.6, 1> ]
      [ 0.75 rgb <0.6, 0.8, 1> ]
      [ 1.0 rgb <0.6, 1, 1> ]
    }
    turbulence 0.1
    frequency 0.5
   }
 }
}
}
cylinder { <0,-980,0>, <0,-1000,0>, 2 }
rotate <0,0,90> translate <-980,13,0> rotate <0,-20-40,0> rotate <-30,0,0>
}
finish { ambient 1 }
rotate <-10,0,0>
}

//Drone 2 ******************************************************************
//Main union
union{
#declare head_rotate = 10;

//Drill
union{
cone { <0,5,0>, 10, <0,-17,0>, 0.2
pigment { rgbt <1,0,0,0.5> } finish { F_MetalA }
}

#declare screw = 0;
#declare screws = 8;
#while(screw <= screws)

difference{
cylinder { <0,3,0>, <0,3.4,0>, 10-(screw*0.95) translate <0,-2.1*screw,0>
pigment { rgb <1,0.01,0> } finish { F_MetalA }
}
cone { <0,5,0>, 8, <0,-15,0>, 0.2 pigment { rgbt 1 } }
}

#declare screw = screw + 1;
#end

cone { <0,5,0>, 8, <0,-15,0>, 0.2 pigment { rgbt 1 }
hollow
interior
{ media
{ emission 10
  density
  { cylindrical density_map
    {
        [ 0.0 rgb <1, 0.4, 0> ]           
        [ 0.3 rgb <1, 0.2, 0> ]
        [ 0.5 rgb <1, 0.5, 0> ] //yellow
        [ 0.75 rgb <.5, 0, 0> ]
        [ 1.0 rgb <0, 0, 0> ]
    }
    turbulence 0.1
    frequency 1
   }
 }
}
}
scale 1.1
}
cone { <0,5,0>, 13, <0,8,0>, 14.5
texture { T_Chrome_4A }
}

union{
cylinder { <0,8,0>, <0,7,0>, 15 pigment { rgbt 0.5 } finish { F_MetalE } }
light_source { <17,6,0> color Blue*15 rotate <0,110,0> }
}
//Dome
difference {
sphere { <0,1,0>, 18 }
cylinder { <0,8,0>, <0,-25,0>, 18 }

#declare SF = 0.8;
intersection {
sphere { <0,0,0>, 10*SF }
cone { <0,10,10>*SF, 3*SF, <0,10,-10>*SF, 0.1*SF scale <0.6,1,1> }
pigment { rgb 0.5 }
rotate <0,0,15>
rotate <-35,0,0>
translate <0,6,-7>*(1/SF)
rotate <0,25,0>
rotate <-15,0,0> scale <1,1.1,1> rotate <0,head_rotate,0>
}
intersection {
sphere { <0,0,0>, 10*SF }
cone { <0,10,10>*SF, 3*SF, <0,10,-10>*SF, 0.1*SF scale <0.6,1,1> }
pigment { rgb 0.5 }
rotate <0,0,15>
rotate <-35,0,0>
translate <0,6,-7>*(1/SF)
rotate <0,25,0>
rotate <-15,0,0> scale <1,1.1,1>
scale <-1,0,0>
}    
texture { T_Chrome_5A } rotate <0,head_rotate,0>
}
//Laser turret
union{
difference{
sphere { <0,0,0>, 5 pigment { rgb 0.5 } finish { F_MetalD } }
cylinder { <0.5,3,0>, <-0.5,3,0>, 4 rotate <0,0,-30> }
}
sphere { <0,0,0>, 4.8 pigment { rgb 0.5 } finish { F_MetalA } }
translate <8+2,14-1,0> rotate <0,head_rotate,0>
}
//Laser turret
union{
difference{
sphere { <0,0,0>, 5 pigment { rgb 0.5 } finish { F_MetalD } }
cylinder { <0.5,3,0>, <-0.5,3,0>, 4 rotate <0,0,-30> }
}
sphere { <0,0,0>, 4.8 pigment { rgb 0.5 } finish { F_MetalA } }
translate <8+2,14-1,0>
scale <-1,0,0> rotate <0,head_rotate,0>
}

union{

difference{
difference{
cylinder { <0,0,-1>, <0,0,1>, 3 }
cylinder { <0,0,-2>, <0,0,2>, 1.5 }
}
difference{
cylinder { <0,0,-3>, <0,0,3>, 5 }
cylinder { <0,0,-2>, <0,0,2>, 3 }
translate <0,2,0>
//pigment { rgb <1,0,0> }
}
cylinder { <0,3,-4>, <0,3,4>, 1.7 }
pigment { rgb 0.7 } finish { F_MetalD }
translate <0,7,-20>
scale <1,1.1,0.5>
}

difference{
difference{
cylinder { <0,0,-0.9>, <0,0,0.9>, 2.7 }
cylinder { <0,0,-2>, <0,0,2>, 1.7 }
}
difference{
cylinder { <0,0,-3>, <0,0,3>, 5 }
cylinder { <0,0,-2>, <0,0,2>, 3 }
translate <0,2,0>
//pigment { rgb <1,0,0> }
}
cylinder { <0,2,-4>, <0,2,4>, 1.0 }
pigment { rgb 1 }
translate <0,8,-20>
scale <0.8,1.0,0.5>
}
scale <1,1.5,1>
rotate <20,0,0>
translate <0,-7.2,-12> rotate <0,head_rotate,0>
}

intersection{
difference {
cylinder { <0,0,-0.9>, <0,0,0.9>, 4}
cylinder { <0,0,-2>, <0,0,2>, 2.5 }
pigment { rgb 0.5 } finish { F_MetalD }
}
cone { <0,1,-1>, 2, <0,-5,-1>, 0.2  pigment { rgb 0.7 } finish { F_MetalD } }  
translate <0,13.5,-16> rotate <0,head_rotate,0>
}

//Ground laser
difference{
sphere { 0,1 scale <1,1000,1> hollow
pigment { rgbt 1 }
interior
{ media
{ emission 1
  density
  { cylindrical density_map
    {
      [ 0 rgb <0, 0, 0> ]
      [ 0.25 rgb <0, 0.4, 0.8> ]
      [ 0.5 rgb <0.2, 0.6, 1> ]
      [ 0.75 rgb <0.6, 0.8, 1> ]
      [ 1.0 rgb <0.6, 1, 1> ]
    }
    turbulence 0.1
    frequency 0.5
   }
 }
}
}
cylinder { <0,-980,0>, <0,-1000,0>, 2 }
rotate <0,0,90> translate <-980,12.3,0> rotate <0,-20-40,0> rotate <-20,0,0>
}
finish { ambient 1 }
translate <100,50,100>
rotate <-10,0,0>
}

//Flight****************************************************************

#declare ant_lion = 1;
#declare ant_lions = 18;
#while(ant_lion <= ant_lions)
#declare head_rotate = RRand(-40,40,0.8);

//Main union
union{
//Plasma Drill
union{
cone { <0,5,0>, 10, <0,-17,0>, 0.2
pigment { rgbt <1,0,0,0.5> } finish { F_MetalA }
}

#declare screw = 0;
#declare screws = 8;
#while(screw <= screws)

difference{
cylinder { <0,3,0>, <0,3.4,0>, 10-(screw*0.95) translate <0,-2.1*screw,0>
pigment { rgb <1,0.01,0> } finish { F_MetalA }
}
cone { <0,5,0>, 8, <0,-15,0>, 0.2 pigment { rgbt 1 } }
}

#declare screw = screw + 1;
#end

cone { <0,5,0>, 8, <0,-15,0>, 0.2 pigment { rgbt 1 }
hollow
interior
{ media
{ emission 10
  density
  { cylindrical density_map
    {
        [ 0.0 rgb <1, 0.4, 0> ]
        [ 0.3 rgb <1, 0.2, 0> ]
        [ 0.5 rgb <1, 0.5, 0> ] //yellow
        [ 0.75 rgb <.5, 0, 0> ]
        [ 1.0 rgb <0, 0, 0> ]
    }
    turbulence 0.1
    frequency 1
   }
 }
}
}
scale 1.1
}
cone { <0,5,0>, 13, <0,8,0>, 14.5
texture { T_Chrome_4A }
}

union{
cylinder { <0,8,0>, <0,7,0>, 15 pigment { rgbt 0.5 } finish { F_MetalE } }
light_source { <17,6,0> color Blue*15 rotate <0,110,0> }
}
//Dome
difference {
sphere { <0,1,0>, 18 }
cylinder { <0,8,0>, <0,-25,0>, 18 }

#declare SF = 0.8;
intersection {
sphere { <0,0,0>, 10*SF }
cone { <0,10,10>*SF, 3*SF, <0,10,-10>*SF, 0.1*SF scale <0.6,1,1> }

//pigment { rgb <0,1,0,0.8> }
pigment { rgb 0.5 }
rotate <0,0,15>
rotate <-35,0,0>
translate <0,6,-7>*(1/SF)
rotate <0,25,0>
rotate <-15,0,0> scale <1,1.1,1>
}
intersection {
sphere { <0,0,0>, 10*SF }
cone { <0,10,10>*SF, 3*SF, <0,10,-10>*SF, 0.1*SF scale <0.6,1,1> }
pigment { rgb 0.5 }
rotate <0,0,15>
rotate <-35,0,0>
translate <0,6,-7>*(1/SF)
rotate <0,25,0>
rotate <-15,0,0> scale <1,1.1,1>
scale <-1,0,0>
}    
texture { T_Chrome_5A } rotate <0,head_rotate,0>
}

//Laser turret
union{
difference{
sphere { <0,0,0>, 5 pigment { rgb 0.5 } finish { F_MetalD } }
cylinder { <0.5,3,0>, <-0.5,3,0>, 4 rotate <0,0,-30> }
}
sphere { <0,0,0>, 4.8 pigment { rgb 0.5 } finish { F_MetalA } }
translate <8+2,14-1,0> rotate <0,head_rotate,0>
}
//Laser turret
union{
difference{
sphere { <0,0,0>, 5 pigment { rgb 0.5 } finish { F_MetalD } }
cylinder { <0.5,3,0>, <-0.5,3,0>, 4 rotate <0,0,-30> }
}
sphere { <0,0,0>, 4.8 pigment { rgb 0.5 } finish { F_MetalA } }
translate <8+2,14-1,0>
scale <-1,0,0> rotate <0,head_rotate,0>
}

union{
difference{
difference{
cylinder { <0,0,-1>, <0,0,1>, 3 }
cylinder { <0,0,-2>, <0,0,2>, 1.5 }
}
difference{
cylinder { <0,0,-3>, <0,0,3>, 5 }
cylinder { <0,0,-2>, <0,0,2>, 3 }
translate <0,2,0>
}
cylinder { <0,3,-4>, <0,3,4>, 1.7 }
pigment { rgb 0.7 } finish { F_MetalD }
translate <0,7,-20>
scale <1,1.1,0.5>
}
difference{
difference{
cylinder { <0,0,-0.9>, <0,0,0.9>, 2.7 }
cylinder { <0,0,-2>, <0,0,2>, 1.7 }
}
difference{
cylinder { <0,0,-3>, <0,0,3>, 5 }
cylinder { <0,0,-2>, <0,0,2>, 3 }
translate <0,2,0>
}
cylinder { <0,2,-4>, <0,2,4>, 1.0 }
pigment { rgb 1 }
translate <0,8,-20>
scale <0.8,1.0,0.5>
}
scale <1,1.5,1>
rotate <20,0,0>
translate <0,-7.2,-12> rotate <0,head_rotate,0>
}

intersection{
difference {
cylinder { <0,0,-0.9>, <0,0,0.9>, 4}
cylinder { <0,0,-2>, <0,0,2>, 2.5 }
pigment { rgb 0.5 } finish { F_MetalD }
}
cone { <0,1,-1>, 2, <0,-5,-1>, 0.2  pigment { rgb 0.7 } finish { F_MetalD } }  
translate <0,13.5,-16> rotate <0,head_rotate,0>
}

finish { ambient 1 }
#declare VR = VRand_In_Box(<-100,-50,100>, <200,100,600>, 3.2);
translate VR*1 translate <0,0,0>
rotate <-10,0,0>
}

#declare ant_lion = ant_lion+1;
#end