Génération de terrain (2/2)
Par Xavier Michelon


 
   
Moyennes de normales

Nous savons maintenant calculer un vecteur normal à un polygone. Il ne reste plus qu'à voir comment effectuer une moyenne de normales. A priori, le principe semble simple : il suffit de faire une moyenne composante par composante : ainsi la moyenne de trois vecteurs u,v,w de composantes respectives (x1,y1,z1), (x2,y2,z2) et (x3,y3,z3) vaut ((x1+x2+x3)/3,(y1+y2+y3)/3,(z1+z2+z3)/3). Ce résultat est juste, mais il n'a de sens que si au départ, les trois vecteurs ont la même longueur, ce qui à priori n'est pas le cas. Avant de calculer la moyenne, il convient de diviser chaque composante du vecteur par la longueur de ce dernier de façon à obtenir un vecteur de longueur 1. Un vecteur de longueur 1 est dit 'normé'. Vous prendrez bien soin de distinguer ce terme du terme 'normal', qui signifie perpendiculaire. L'opération qui consiste à diviser les composantes d'un vecteur par sa longueur se nomme normalisation. Un vecteur et le vecteur résultant de sa normalisation sont colinéaires. En notant sqrt()  l'opérateur 'racine carrée', la longueur d'un vecteur u de composantes (x,y,z) vaut n=sqrt(x*x+y*y+z*z), et le résultat de la normalisation de u est le vecteur de composantes (x/n,y/n,z/n).

Recapitulatif

Ca y est, nous en avons terminé avec les maths. Voici un petit récapitulatif des opérations nécessaires pour obtenir un vecteur normal à un objet en un sommet :

- Calculer un vecteur normal à chacun des polygones dont le sommet fait partie
- Normer chacun des vecteurs normaux
- Calculer la moyenne des vecteurs normaux normés (Raymond Devos ne ferait pas mieux).

Attention ce n'est pas fini ! Nous avons vu il y a quelques temps de cela que pour que l'éclairage soit correct, il fallait que le vecteur normal soit de longueur 1. Il faut donc normer le résultat de la moyenne.