// Last edited on 2007-04-01 15:29:13 by stolfi
// Obs: entregou por e-mail por falta de conta ou problemas de login.

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

#declare azul = 
  texture {
    pigment { color rgb < 0.00, 0.00, 1.00 > }
    finish { diffuse 0.8 specular 0.3 roughness 0.005 ambient 0.2 }
  }

#declare vermelho = 
  texture {
    pigment { color rgb < 1.00, 0.00, 0.00 > }
    finish { diffuse 0.8 specular 0.3 roughness 0.005 ambient 0.2 }
  }

#declare amarelo = 
  texture {
    pigment { color rgb < 1.00, 0.80, 0.10 > }
    finish { diffuse 0.8 specular 0.3 roughness 0.005 ambient 0.2 }
  }

#declare verde = 
  texture {
    pigment { color rgb < 0.00, 1.00, 0.00 > }
    finish { diffuse 0.8 specular 0.3 roughness 0.005 ambient 0.2 }
  }

#declare branco = 
  texture {
    pigment { color rgb < 1.00, 1.00, 1.00 > }
    finish { diffuse 0.8 specular 0.3 roughness 0.005 ambient 0.2 }
  }

#declare suporte =
  cone {
    < 0.00, 0.00, 3.00 >, 0.15
    < 0.00, 0.00, 0.00 >, 1.00
    texture { azul }
  }

// O suporte deve ser oco; é a diferença entre suporte e vazio_suporte
#declare vazio_suporte =
  cone {
    < 0.00, 0.00, 2.50 >, 0
    < 0.00, 0.00, 0.00 >, 0.85
    texture { azul }
  }

#declare cilindro1 = 
  cylinder {
    < 0.00, 0.00, 3.00 >,
    < 0.00, 3.00, 3.00 >,
    0.15
    texture { vermelho }
  }

#declare cilindro2 = 
  cylinder {
    < 0.00, 3.00, 3.00 >,
    < 0.00, 3.00, 2.00 >,
    0.15
    texture { amarelo }
  }

#declare caixa = 
  box {
    < 0.25, 2.00, 1.85 >,
    < -0.25, 4.00, 2.00 >
    texture { verde }
}

// A esfera é a junção das hastes
#declare esfera =
  sphere {
    < 0.00, 3.00, 3.00 >, 0.20 
    texture { branco }
  }

// Para aumentar o arrasto hidrodinamico, mexendo melhor o café,
// o mexedor tem dois furos

#declare furo1 =
  box {
    < 0.15, 2.15, 1.80 >,
    < -0.15, 2.30, 2.05 >
    texture { verde }
}

#declare furo2 =
  box {
    < 0.15, 3.70, 1.80 >,
    < -0.15, 3.85, 2.05 >
    texture { verde }
}

  
// Aqui está a cena, finalmente:

union {
	difference {
		object { suporte }
		object { vazio_suporte}
	}
	object { cilindro1 }
	object { cilindro2 }
	difference {
		object { caixa }
		union {
			object { furo1 }
			object { furo2 }
		}
	}
	object { esfera }
}
	
#include "camlight.inc"
camlight(<0,1.5,1.5>,<10.00,10.00,8.00>,0.40,z,1.0)