// TP02 - 14/08/03
#include "colors.inc"

// ======================================================================
// CÂMERA 

camera {
  location  <  0.00, 15.00, 5.00 >  // Posição do observador.
  right     -1.0*x                 // Largura RELATIVA da imagem.
  up        0.75*y                 // Altura RELATIVA da imagem.      
  sky       y                      // Qual direção é "para cima"?
  look_at   <  0.00, 0.00, 0.00 >  // Para onde a câmera está apontando.
} 
// Nota: os parâmetros "right" e "up" devem ter a mesma proporção
// que os parâmetros ${WIDTH} e ${HEIGHT} no Makefile.

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

light_source {
  10 * < +50.0, +50.0, +50.0 >              // Posição da lâmpada.
  color rgb 3 * < 1.00, 1.00, 1.00 >   // Intensidade e corda luz.
} 

light_source {
  10 * < -50.0, 100.0, 0.0 >             // Posição da lâmpada.
  color rgb 2 * < 1.00, 1.00, 1.00 >   // Intensidade e corda luz.
} 

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

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

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

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

/*#declare alfa = 2;
#declare beta = 0.1;
#declare teste =
  material {
    texture { pigment { color rgb <1,1,1> transmit 1} }
    interior {
      media {
        emission { alfa*<1.0,0.8,0.2> }
        scattening { 1, beta*<0.5,1.0,0.8> }
      }
    }
  }
*/

#declare imagem = "earth-land.png"

#declare raio_mundo = 5.0;
#declare raio_cres_i = 1;
#declare raio_cres_f = 1.5;
#declare temp_i = -3;
#declare temp_f = 0.5;

#declare final = 0.5;
#if (clock < final)
  #declare tp = (clock-0.0)/(final-0.0);
  #declare raio_cres = (1-tp)*raio_cres_i + tp*raio_cres_f;
  #declare temp = (1-tp)*temp_i + tp*temp_f;
#else
//  #declare tp = (clock-final)/(1.0-final);
//#declare raio_cres = (1-tp)*raio_cres_f + tp*raio_cres_i;
//  #declare temp = (1-tp)*temp_f + tp*temp_i;
  #declare raio_cres = raio_cres_f;
  #declare temp = temp_f;
#end

#declare alt_i = 1;
#declare alt_f = 6;

//Aqui está a cena:
 blob {
   threshold 0.8
   sphere { <0,0,0>, raio_mundo, 5 pigment { image_map{ png imagem map_type 1} scale<-1,1,1> } rotate 255*x rotate 38*z}
   sphere { <0,raio_mundo-0.5,0>, raio_cres, temp texture {tinta_vermelha} }
   #if (clock >= final)
     #declare tp = (clock-final)/(1.0-final);
     #declare alt = (1-tp)*alt_i + tp*alt_f;
     sphere { <0,raio_mundo,0.5>, 0.2, 2 texture {tinta_vermelha_clara} translate<0,alt,0.1*clock>}
     sphere { <0,raio_mundo,-0.5>, 0.2, 2 texture {tinta_vermelha_clara} translate<0,alt,-0.1*clock>}
     sphere { <0.5,raio_mundo,-0.5>, 0.2, 2 texture {tinta_vermelha_clara} translate<0.5,alt,-0.1*clock>}
   #end
 }