// Exemplo de arquivo de descricao de cena para POV-ray
// Last edited on 2003-09-04 15:25:26 by stolfi

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

camera {
  location  <  190.00, 190.00, 0.00 >  // Posição do observador.
  right     -1.5*x                // Largura RELATIVA da imagem.
  up        0.75*y                 // Altura RELATIVA da imagem.      
  sky       z                      // 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, -30.0, +50.0 >              // Posição da lâmpada.
  color rgb 1.2 * < 1.00, 1.00, 1.00 >   // Intensidade e corda luz.
} 

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

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

background{ color rgb < 0.75, 0.80, 0.85 > }
#declare bz_name = "bola"
#declare bz_scale = 0.16;
#include "bz-things.inc"

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

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

#declare B11=<-1.5,0,1.8>; #declare B12=<-0.5,0,2.2>; //
#declare B13=<0.5,0,2.6>; #declare B14=<1.5,0,3>; // row 1

#declare B21=<-1.5,0,1.6>; #declare B22=<-0.5,.2,1.8>; //
#declare B23=<0.5,.5,2>; #declare B24=<1.5,.8,2.2>; // row 2

#declare Bd22=<-0.5,0,1.8>; //
#declare Bd23=<0.5,0.1,2>; #declare Bd24=<1.5,0.2,2.2>; // row 2 down

#declare B31=<-1.5,0,1.4>; #declare B32=<-0.5,.1,1.2>; //
#declare B33=<0.5,.2,1>; #declare B34=<1.5,.4,0.8>; // row 3

#declare Bd32=<-0.5,0,1.2>; //
#declare Bd33=<0.5,0.1,1>; #declare Bd34=<1.5,.2,0.8>; // row 3 down

#declare B41=<-1.5,0,1.2>; #declare B42=<-0.5,0,0.8>; //
#declare B43=<0.5,0,0.4>; #declare B44=<1.5,0,0>; // row 4

#declare A11=<-1.5,0,1.8>; #declare A12=<-0.5,0,2.2>; //
#declare A13=<0.5,0,2.6>; #declare A14=<1.5,0,3>; // row 1

#declare A21=<-1.5,0,1.6>; #declare A22=<-0.5,.2,1.8>; //
#declare A23=<0.5,.5,2>; #declare A24=<1.5,.8,2.2>; // row 2

#declare A31=<-1.5,0,1.4>; #declare A32=<-0.5,.1,1.2>; //
#declare A33=<0.5,.2,1>; #declare A34=<1.5,.4,0.8>; // row 3

#declare A41=<-1.5,0,1.2>; #declare A42=<-0.5,0,0.8>; //
#declare A43=<0.5,0,0.4>; #declare A44=<1.5,0,0>; // row 4


#declare pontaup = 
union {
  bicubic_patch {
     type 1 flatness 0.001
     u_steps 4 v_steps 4
     uv_vectors
     <0,0> <1,0> <1,1> <0,1>
     B11, B12, B13, B14
     B21, B22, B23, B24
     B31, B32, B33, B34
     B41, B42, B43, B44
     uv_mapping
     texture { tinta_A }
  }

#declare Pointsu=array[16]{
   B11, B12, B13, B14
   B21, B22, B23, B24
   B31, B32, B33, B34
   B41, B42, B43, B44
}
#declare I=0;
#while (I<16)
   sphere {
      Pointsu[I],0.1 
      no_shadow 
      pigment{
         #if (I=0|I=3|I=12|I=15)
            color rgb <1,0,0>
         #else
            color rgb <0,1,1>
         #end
      }
   }
   #declare I=I+1;
#end
}
#declare pontadown = 
union {
  bicubic_patch {
     type 1 flatness 0.001
     u_steps 4 v_steps 4
     uv_vectors
     <0,0> <1,0> <1,1> <0,1>
     B11, B12, B13, B14
     B21, Bd22, Bd23, Bd24
     B31, Bd32, Bd33, Bd34
     B41, B42, B43, B44
     uv_mapping
     texture { tinta_A }
  }

#declare Pointsd=array[16]{
   B11, B12, B13, B14
   B21, Bd22, Bd23, Bd24
   B31, Bd32, Bd33, Bd34
   B41, B42, B43, B44
}
#declare I=0;
#while (I<16)
   sphere {
      Pointsd[I],0.1 
      no_shadow 
      pigment{
         #if (I=0|I=3|I=12|I=15)
            color rgb <1,0,0>
         #else
            color rgb <0,1,1>
         #end
      }
   }
   #declare I=I+1;
#end
}

#declare asad = 
union {
  #object{pontaup translate <-2,0,0>}
  #object{pontadown scale <1,1,-1> rotate 180*x translate <-2,0,0>}
}

#declare bola = 
  sphere {
    <0,0,2>,
    1.2
    texture {tinta_B}
    }

object {asad}
object {asad scale <-1,1,1>}
object {bola}