LE CUBE


Le cube est défini dans son propre repère par la valeur de son côté.

On définit les huit sommets et on utilise la méthode parallélogramme pour tracer le cube et relier correctement les sommets.

a1 = (côté/2 , côté/2 , -côté/2 , 1)
a2 = (côté/2 , côté/2 , côté/2 , 1)
a3 = (côté/2 , -côté/2 , côté/2 , 1)
a4 = (côté/2 , -côté/2 , -côté/2 , 1)
a5 = (-côté/2 , -côté/2 , -côté/2 , 1)
a6 = (-côté/2 , côté/2 , -côté/2 , 1)
a7 = (-côté/2 , côté/2 , côté/2 , 1)
a8 = (-côté/2 , -côté/2 , côté/2 , 1)

Puis on trace les faces avec la méthode parallélogramme pour (a1, a2, a4 ) , (a6, a7, a5 ) , (a1, a2, a6 ) , (a2, a7, a3 ), (a3, a8, a4 ) , (a4, a5, a1 )


Calcul de l'intersection

On calcule la distance entre le point d'intersection du rayon et de la face (a1, a2, a4 ) (méthode intersection de la classe parallélogramme). Si elle est différente de MAXDOUBLE, on affecte le numéro de la face intersectée à 0, sinon on l'affecte à -1. Puis, pour chaque face restante, on calcule une distance d' que l'on compare à d. Si d'<d, la face la plus proche intersectée est la face en cours, d'où le numéro de la face intersectée vaut le numéro de la face en cours, d prend la valeur de d', et le point d'intersection est mis à jour.


Calcul de la normale

Par défaut, on affecte les coordonnées de la normale à zéro.
Puis, selon la face considérée, on modifie ces valeurs de la manière suivante :

Selon la faceIntersectee
{
face (a1, a2, a4 ) :laNormalex = 1;
face (a6, a7, a5 ) :laNormalex = -1;
face (a1, a2, a6 ) :laNormaley = 1;
face (a2, a7, a3 ) :laNormalez = 1;
face (a3, a8, a4 ) :laNormaley = -1;
face (a4, a5, a1 ) :laNormalez = -1;
}


Auteurs : Thomas Bonfort, Delphine Chaigneau, Olivier Galizzi, Laure Heigeas