Document sans titre


     
  
    Chaque objet possède une méthode de calcul d’intersection propre. Un rayon représente le trajet d’un photon, et n’a donc pas d’épaisseur. Il est modélisé sous la forme d’une demi-droite, c’est-à-dire un point de départ Origine et un vecteur directeur VectDir. Les points appartenant à la demi-droite vérifient donc l’équation :

 

     avec t >0

Intersection avec une sphère

 
            L’une des premières formes à avoir été implémentée, car étant la plus simple, fut la sphère. Une sphère possède un centre, un rayon et son équation est de la forme Pour information, l'équation générale d'une sphère S de centre M et de rayon r est .

 

            Pour calculer l’intersection, deux approches sont possibles. Soit un calcul algébrique se basant sur les équations mathématiques, soit une approche géométrique. Cette seconde méthode est bien moins gourmande en calcul car elle nécessite moins d’opérations. Nous avons donc naturellement opté pour celle-ci.

      où OC et D sont connus

 

  Si   , il n’y a pas d’intersection

 

  Sinon, on calcule

  Si  , pas d’intersection   

  On a alors deux solutions

 

On conserve ensuite la valeur la plus petite des deux et  strictement positive de t. 

Il ne nous reste plus qu’à déterminer les coordonnées du point d’intersection à l’aide de la définition du rayon :

     avec > 0.

 

            Un autre paramètre très utile doit être calculé à ce moment-là, il s’agit de la normale à l’objet en ce point. Ici, la normale n’est pas dure à trouver, il suffit de construire le vecteur  et de le normaliser.

 

         Rem : A cause des approximations de calcul, une forme géométrique possède une surface avec certaine épaisseur certes très petite mais lors de calculs d’intersections, il se peut que l’on retombe sur le point d’origine du rayon émis (lors d’une réflexion sur une surface par exemple). C’est pourquoi, on ne conserve que des valeurs de t > 0.01.

Intersection avec un plan


           
Pour le plan, une approche calculatoire a été retenue. Un plan est défini par l’équation .

           

            Sachant que la normale au plan est

Un rayon , tel que , appartient au plan si

 

D’où

 

            On en déduit le point d’intersection en réinjectant t dans l’expression du rayon et la normale au point d’intersection est donnée directement par l’équation du plan.

Généralisation d’intersection aux quadriques 


L’équation générale d’une quadrique est

 

En injectant les composantes d’un rayon dans celle-ci, nous obtenons une équation du second degré en t.  , avec

 

                     On en déduit deux solutions

 

                     Ensuite la démarche algorithmique à suivre est la suivante :

1.     Si , alors la solution est

2.     Sinon, on calcule le discriminant . Si celui-ci est négatif, il n’y a pas d’intersection.

3.     Si le discriminant est positif, on calcule  et . On conserve la valeur positive la plus petite des deux et l’on calcule le point d’intersection .

4.     On calcule la normale en ce point en se rappelant que ses composantes sont les dérivées partielles respectives de F en ce point vaut

 , soit en développant

On normalise ce résultat, et l’on retourne  si , sinon on inverse .

Intersection avec un cylindre


 
Un cylindre étant une quadrique simple, il suffit d’utiliser les résultats précédents et de les appliquer à ce cas particulier.

            Pour des raisons de simplicité de calculs, le moteur ne gère que des cylindres parallèles à l’axe des x , à celui des y ou celui des z. Les cylindres peuvent êtres infinis si on affecte zéro au paramètre hauteur.

Prenons l’exemple d’un cylindre parallèle à x d’équation . Il suffit de suivre la démarche donnée au paragraphe précédent avec , et les autres coefficients nuls.

Dans ce cas, la normale vaudra