// Last edited on 2003-12-09 01:58:12 by stolfi

#declare YCH = -3.5;

#declare ctr = <-4.5, 2, 0 >;
#declare camDir = < -6,5,8 >;
// #declare camDir = < -4,12,3.5 >;

// sphere{ ctr, 2 texture{ pigment{ color rgb <1,0,1> } finish { ambient 0.6 diffuse 0.4 } } }

camera {
  location   ctr + 1.50*camDir
  right      -1.00*x
  up         0.75*y
  sky        y
  look_at    ctr
}

// ======================================================================
// FONTES DE LUZ

light_source {
  10 * < -20.0, +80.0, +20.0 >              // Posição da lâmpada.
  color rgb 1.2 * < 1.00, 1.00, 1.00 >   // Intensidade e corda luz.
  area_light 10*<5, 0, 0>, 10*<0, 0, 5>, 3,3
  adaptive 1
}

// ======================================================================
// DESCRIÇÃO DA CENA

/*------------------------CONFIGURACOES GERAIS DO AMBIENETE-------------------------------*/

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

//rgbf (filter)  rgbt (transmit)
 //*--TEXTURA SKY <--tutorial
   #declare Clouds0 = pigment{
     gradient y
     color_map {
        [0 color <0,0,1>]
        [1 color <0.4,0.5,0.7>]
      }
      scale 2
      translate -1

   }

   #declare Clouds1 = pigment {
      bozo
      turbulence 0.2
      color_map {
        [0.0 color rgb <1,1,1> filter 1]
        [0.5 color rgb <1,1,1>]
        [1.0 color rgb <1,1,1> filter 1]
      }
    }

  #declare Clouds4 = pigment {
    granite
    turbulence 1
    color_map {
      [0.0 color rgb <1,1,1> filter 1]
      [0.5 color rgb <1,1,1>]
      [1.0 color rgb <1,1,1> filter 1]
    }
  }

 sky_sphere{
    pigment { Clouds0}
    pigment {Clouds1 scale 0.5}

  }

//  fog {
//   fog_type   2
//   distance   100
//   color      rgb 0.6 // gray
//   fog_offset 0.1
//   fog_alt    0.6
//   turbulence 0.8
// }

/*------------------------------FIM DESCRICAO MEI AMBIENTE--------------------------*/

/*------------------------------------PISO---------------------------*/
#declare piso =
  plane{
    y, YCH
    texture{
      pigment{ checker color rgb <0.7,0.6,0.5>, color rgb <0.6,0.5,0.2> }
      finish{ diffuse 0.7 ambient 0.3 }
      scale 2
    }
  }
/*------------------------------------------------------------------*/

/*-----------------------------------TEXTURAS------------------------------*/
#declare cor_inseto=
    texture{
      pigment{
        gradient x
        color_map {
          [0 color <0.2,0.8,0.0>]
          [1 color <1,0.9,0.1>]
      }
     }

    }

#declare cor_juntas=
      texture{
         pigment {color rgb <0.9,0.1,0.1>}

      }

#declare sup_mato =
     texture{
        pigment {
         wood
         //turbulence 0.1
         color_map{
           [0.00 color rgb <0.9,0.9,0.0>]
           [0.25 color rgb <1,1,0>]
           [0.50 color rgb <0.95,0.55,0.0>]
           [0.75 color rgb <0.9,0.98,0>]
           [1.00 color rgb <1,1,0>]

         }
         scale 0.5

       }

     }

/*---------------------------FIM--TEXTURAS-------------------------------------*/

/*---------------------------ELEMNTOS ADICIONAIS DA CENA------------------------*/
#declare troncos =
    cylinder {
       <0,0,0>
       <0,0,1>
        2
       texture {sup_mato}
       normal {dents 1.5 scale 0.3}
       rotate -x*90
   }
/*-------------------------------FIM ELEMNOS ADICIONAIS-------------------------*/

/**----------------CLOCKS---------------------*/
#declare clk1=clock/0.25;
#declare clk2=(clock-0.25)/(1-0.25);
#declare clk3=(clock-0.5)/(1-0.5);
#declare clk4=(clock-0.75)/(1-0.75);

#if(clock<=0.25)
 #declare par_up=1;

#end

/*#if (clock>0.25)&(clock<=0.5)

#if (clock>0.5)&(clock<=0.75)

#if (clock>0.75)&(clock<=1.0)*/

/*-----------------------*/

/*--------------------LOOP "WHILE" PARA GERAR PERNAS NAS POSICOES ALEATORIAS------*/

#declare R1 = seed (34567);
#declare dy=1.5;
#declare posy=0.6;
#declare conta=0;

#while(conta<8)
   #declare a=95*rand(R1)-50;
   #declare b=95*rand(R1)-50;
   #declare c=95*rand(R1)-50;
   #declare e=10*rand(R1)-10;

   #declare perna0=
        union{
           sphere {
             <0,0,0>
        0.3
           texture {cor_juntas}
           }

           cylinder {
             <0,0,0>
       <-2,0,0>
       0.2
     texture {cor_inseto}
     normal {bumps 0.5 scale 0.1}
           }
           cylinder {
             <0,0,0>
       <-.2,0,0>
       0.6
             scale y*1.2
       translate <-2,0.5,0>
             pigment {color rgb <0.9,0.3,0.3>}
             normal {bumps 0.5 scale 0.1}
            }
        }

#declare perna1=
 union{
   union{
      sphere {
        <0,0,0>
  0.35
  texture {cor_juntas}
       }

      cylinder {
        <0,0,0>
  <-1.5,0,0>
  0.2
  texture {cor_inseto}
  normal {bumps 0.5 scale 0.1}
       }

   }

   object {perna0 rotate z*a rotate y*e translate x*-1.5}

   }

#declare perna2=
  union{
   union{
      sphere {
        <0,0,0>
  0.4
  texture {cor_juntas}
       }

      cylinder {
        <0,0,0>
  <-2.5,0,0>
  0.3
  texture {cor_inseto}
  normal {bumps 0.5 scale 0.1}
       }

   }

   object {perna1 rotate z*b translate x*-2.5}

   }

#declare perna3=
  union{
   union{
      sphere {
        <0,0,0>
  0.45
  texture {cor_juntas}
       }

      cylinder {
        <0,0,0>
  <-2,0,0>
  0.3
  texture{cor_inseto}
  normal {bumps 0.5 scale 0.1}
       }

   }

   object {perna2 rotate z*90 rotate z*c translate x*-2}

   }

   /*-----------------PERNAS COMPLETAS---------------------*/
   #if (conta<=3)
     #if((conta=0) | (conta=2))
        object {perna3 rotate <90,90,90> rotate x*clock*-30 rotate ((1-clock)-30+clock*60)*y translate <-posy,2,0.3>}
     #else
        object {perna3 rotate <90,90,90> rotate x*clock*-30 rotate ((1-clock)-30+clock*60)*y translate <-posy,2,0.3>}
     #end
   #end

   #if(conta=4)
       #declare posy=0.6;
   #end

   #if(conta>=4)
     #if ((conta=4) | (conta=6))
      object {perna3 rotate <-90,-90,90> rotate x*clock*30 rotate y*clock*-90  translate <-posy,2,-0.3>}
     #else
      object {perna3 rotate <-90,-90,90> rotate x*clock*60 rotate y*clock*-90  translate <-posy,2,-0.3>}
     #end
   #end

   /*------------------------------------------------------*/

   #declare posy=posy+dy;
   #declare conta=conta+1;

#end
/*-----------------------------------END DO WHILE LOOP--------------------------*/

/*------------------------OBJETOS DO CORPO DO INSETO--------------------------------*/

#declare olhos =
   sphere {
     <0,0,0>
     0.4
     pigment{checker color rgb <0.2,0.2,0.1> color rgb <0.8,0.8,0.9> scale 0.1}
     finish {
         phong 0.8
         //reflection 0.8
         }

   }

#declare antena=
  union{
     cylinder{
       <0,0,0>
       <0,5,0>
       0.1
       scale x*1.3

     }
     sphere{
        <0,0,0>
  0.2
        scale y*2
  translate y*5
  pigment {color rgb<1,1,1>}
  finish {phong 0.8}
     }

  }

#declare cabeca=
  union{
   sphere{
     <0,0,0>
     1
     scale x*1.5
   }
   object {antena rotate <-10,0,20> translate z*-0.2 }
   object {antena rotate <10,0,20> translate z*0.2 }
   object {olhos translate <-0.6,0.2,-1>}
   object {olhos translate <-0.6,0.2,1>}
   rotate z*-90

 }
#declare corpo =
  union{
   lathe{
     cubic_spline
     13
     <0,0>,<0.5,0.25>,<0.75,0.5>,<1,0.9>,<0.5,1.75>
     <0.52,3.5>,<0.4,4>,<0.25,4.3>,<0.4,4.6>,<0.6,5>
     <0.8,6>,<0.5,6.75>,<0.25,6.8>

   }
   object {cabeca translate y*7.8}
   pigment {color rgb <0.9,0.3,0.3>}
   normal {dents 2.0 scale 0.25}
   normal {bumps 0.5 scale 0.4}
 }

/*------------------------------FIM OBJETOS DO CORPO---------------------------------*/

/*-----------------------DESCRICAO DA CENA-----------------------------------------*/
object {corpo rotate z*90 translate y*2}
object {piso}
object {troncos scale 2 translate <4,YCH,8>}
object {troncos scale y*15 scale 2 translate <16,YCH,4>}
object {troncos scale y*55 scale 2 translate <50,YCH,-80>}
/*------------------------------------------------------------------------*/