// Last edited on 2003-10-14 23:49:48 by stolfi

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

#declare ctr = <  0.00, 0.00, 2.00 >;
#declare camdir = <  15.00, 3.00, 8.00 >;

camera {
  location  ctr + 0.9*camdir // Posição do observador.
  right     -0.60*x                 // Largura RELATIVA da imagem.
  up        0.80*y                 // Altura RELATIVA da imagem.      
  sky       z                      // Qual direção é "para cima"?
  look_at   ctr  // 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.1 * < 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.5 * < 1.00, 1.00, 1.00 >   // Intensidade e corda luz.
} 

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

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

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

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

#declare cor_chapeu = 
  texture {
    pigment { color rgb <0.8,1,0.6> }
    finish { diffuse 0.8 specular 0.5 roughness 0.005 ambient 0.1 }
  }


#declare chapeu =
  union {
    cylinder {
      <0, 0, 6.5>,
      <0, 0, 5.8>,
      0.8
      texture { cor_chapeu }
    }
    cylinder {
      <0, 0, 5.8>,
      <0, 0, 5.7>,
      1.4
      texture { cor_chapeu }
    }
  }


#declare cabeca =
  difference {
    sphere {
      <0, 0, 5>,
      1              // raio
      texture { cor_corpo }
    }
    cylinder {
      <-3, 0, 5.2>,
      <3, 0, 5.2>,
      0.35           // raio
    }
    rotate <0, 0, 20>
  }

#declare pescoco =
  cylinder {
    <0, 0, 4>,
    <0, 0, 3.5>,
    0.3
    texture { cor_corpo }
  }


#declare ombro =
  cylinder {
    <0, 1.5, 3.2>,
    <0, -1.5, 3.2>,
    0.3
    texture { cor_roupa }
  }



#declare parte_tronco =
  sphere {
    <0,0,0>,
    0.5
    texture { cor_roupa }
  }

#declare tronco =
  union {
    object { parte_tronco translate <0, 0, 2.8> scale <1, 1.5 , 1> }
    object { parte_tronco translate <0, 0, 2>   scale <1, 1.25, 1> }
    object { parte_tronco translate <0, 0, 1.2> }
    object { parte_tronco translate <0, 0, 0.4> }
  }


#declare cintura =
  intersection {
    cylinder {
      <0, -5, 0>,
      <0,  5, 0>,
      0.26
      texture { cor_roupa }
    }
    cone {
      <0, 0, -6>,  2.5,
      <0, 0, 1>, 1
      texture { cor_roupa }
    }
  }


#declare pernad =
  union {
    cylinder {
      <0, -1, 0>,
      <1, -1.7, -2.6>,
      0.3
      texture { cor_roupa }
    }
    cylinder {
      <0.2, -0.7, -4.1>,
      <1, -1.7, -2.6>,
      0.3
      texture { cor_roupa }
    }
  }

#declare pernae =
  union {
    cylinder {
      <0, 1, 0>,
      <0.7, 1.5, -3>,
      0.3
      texture { cor_roupa }
    }
    cylinder {
      <0.7, 1.5, -3>,
      <0.5, 1.3, -4.8>,
      0.3
      texture { cor_roupa }
    }
  }


#declare bracod =
  union {
    cylinder {
      <0.2, -1.5, 3>,
      <1.3, -2.0, 1.5>,
      0.25
      texture { cor_corpo }
    }
    sphere {
      <1.3, -2.0, 1.5>,
      0.25
      texture { cor_corpo }
    }
    cylinder {
      <1.3, -2,   1.5>,
      <1.5, -2.2, 3.3>,
      0.25
      texture { cor_corpo }
    }
  }

#declare bracoe =
  union {
    cylinder {
      <0.2, 1.4, 3>,
      <1.3, 1.7, 1.4>,
      0.25
      texture { cor_corpo }
    }
    sphere {
      <1.3, 1.7, 1.4>,
      0.25
      texture { cor_corpo }
    }
    cylinder {
      <1.3, 1.7, 1.4>,
      <1.6, 0.3, 0.8>
      0.25
      texture { cor_corpo }
    }
  }

//#declare ombro =
//  cylinder {
//    <0, 1.5, 3.2>,
//    <0, -1.5, 3.2>,
//    0.3
//    texture { cor_roupa }
//  }



// Cena final:

union {
  object { cabeca }
  object { pescoco }
  object { chapeu }
  object { ombro }
  object { tronco }
  object { cintura }
  object { pernad }
  object { pernae }
  object { bracod translate <-0.2,  0.2, 0.2>}
  object { bracoe translate <-0.2, -0.2, 0.2>}
}