Example #1
0
Rayon CameraPinhole::genererRayon(int x, int y) const
{
	// calcule la direction dans le repere monde
	Vecteur2 uv = imageVersEcran(x, y);
	Vecteur3 uvw = ecranVersCamera(uv);
	Vecteur3 direction = cameraVersMonde(uvw);
	direction.normer();

	// retourne le rayon
	return Rayon(_position, direction);
}
Example #2
0
bool LumierePoint::calculerEclairement(const Intersection &intersection, const Scene &scene, Eclairement &eclairement) const
{
	// calcule la direction de la lumiere
	Vecteur3 L = _position - intersection._position;
	reel distance = L.calculerNorme();
	L.normer(distance);

	// teste si la lumiere est visible
	Rayon rayonLumiere(intersection._position, L);
	rayonLumiere.avancer();
	bool visible = scene.visibilite(rayonLumiere, distance);

	// initialise l'eclairement
	if (visible)
	{
		eclairement._couleur = _couleur;
		eclairement._incidence = L;
	}

	return visible;
}