Triangulation de surfaces implicites algébriques
Programmation Ocaml
Haider Sadjaad - Sarrasin Nicolas
2008 – 2009
Énoncé du problème :
Programmer la triangulation de la frontière d'objets en 3D, décrits par une inéquation
algébrique, en utilisant les bases de Bernstein. C'est une extension de la méthode programmée en
TP pour calculer des couvertures de courbes implicites algébriques f(x,y)=0. En 3D chaque cube
sera pavé par 5 (ou 6) tétraèdres, et l'intersection entre la surface et un tétraèdre sera approchée par
un triangle ou un quadrilatère : soient Si les sommets du tétraèdres, i= 0,1,2,3. Calculer la valeur de
la fonction f aux sommets Si. Il existe une seule fonction affine F(x, y, z) = Ax + By + Cz + D qui
prend ces valeurs aux sommets. Elle s'annule sur un plan, dont l'intersection avec le tétraèdre est la
facette cherchée.
Références : chercher Marching Cubes, Marching Tetrahedra.
Sommaire
1. Marching Tetrahedra : Principe de l'algorithme 4
Un mot sur l'algorithme du Marching Cube 4
Marching Tetrahedra 4
2. Notions de bases 5
Présence d'une intersection entre un cube/tétraèdre et une surface 5
Intersection entre une arête et une surface 5
Intersection d'un tétraèdre et une surface 5
1. 3. Détails de la programmation 6
Les types 6
Les principales fonctions 6
L'algorithme 7
4. Quelques exemples 7
Comparaison de rendu : sphère unité7
Exemples divers 9
5. Conclusion 10
6. Sources 11
1. Marching Tetrahedra : Principe de l'algorithme.
Un mot sur l'algorithme Marching Cubes
L'algorithme Marching Cubes est une méthode permettant de générer un objet polygonal à partir
d'un maillage structuré et uniforme. Le champs scalaire est divisé en cubes de taille identique et est
parcouru, cubes par cubes, pour déterminer les éventuelles intersections de chaque cube avec la
surface. Différentes configurations sont possibles et dépendent de la répartition des intersections de
la surface avec les arêtes des cubes.
Marching Tetrahedra
L’algorithme du Marching Tetrahedra dérive de l’algorithme du Marching Cubes. Le principe est de
diviser le cube élémentaire en tétraèdres. Ainsi, pour chaque cube, on peut extraire 6 tétraèdres sur
lesquels vont se calculer les intersections.
Pour l'implémentation de l'algorithme, la convention suivante fut choisit :
Tétraèdre n°0 Tétraèdre n°1 Tétraèdre n°2
Tétraèdre n°3 Tétraèdre n°4 Tétraèdre n°5
A (resp. G) étant le point le plus bas (reps. haut) du cube ayant les plus petites (resp. grandes)
coordonnées.
Il y a par conséquent, plus de faces générées qu'avec l'algorithme du Marching Cubes.
Pour chacun des cubes et des tétraèdres, on évalue la valeurs des sommets avec l'isovaleur de la
fonction. Ensuite, pour chaque arête intersectée, on calcule l'intersection par interpolation linéaire ce
qui nous donne les sommets de la facette recherchée sur chaque tétraèdres.
2. Notions de base
Pour implémenter l'algorithme du Marching Tetrahedra, nous avons utilisé plusieurs notions.
Présence d'intersection entre un cube/tétraèdre et une surface implicite :
Soient Si, i=1,..,n les sommets d'un tel polyèdre.
On évalue les valeurs de chaque sommets avec la fonction définissant la surface. Trois cas sont à
distinguer :
si toutes les valeurs sont positives : le polyèdre est à l'extérieur de la surface
si toutes les valeurs sont négatives : le polyèdre est à l'intérieur de la surface
s'il existe au moins deux valeurs de signe différents : le polyèdre intersecte la surface.
Intersection entre une arête et une surface implicite :
On utilise une interpolation linéaire avec la méthode de dichotomie.
Considérons A (évalué négativement) et B (évalué positivement) les deux extrémités de l'arête, la
méthode se présente sous cette forme :
si le produits de deux valeurs des extrémités est positif, on s'arrête il n'y a pas d'intersection.
Sinon,
si
AB
alors on s'arrête.
sinon, on calcule le milieu M du segment [AB] et on évalue ce point avec la fonction
si le produit de la valeur de A avec celle de M est négatif alors l'intersection
est sur [AM], et on effectue la dichotomie sur le segment [AM]
sinon, l'intersection est sur le segment [MB], et on effectue la dichotomie sur
[MB].
Intersection d'un tétraèdre avec une surface implicite
Lorsqu'on a déterminé la présence d'intersections entre la surface et le tétraèdre, on calcule ces
points via la méthode de dichotomie, au niveau de chaque arête du tétraèdre. Il y a deux cas
possibles : soit la facette obtenue est un triangle soit un quadrilatère.
Il ne reste plus qu'à orienté la face correctement.
1 / 11 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !