« Surfaces polygonales et surfaces de subdivision » : différence entre les versions

De Wiki du LAMA (UMR 5127)
Aller à la navigation Aller à la recherche
Ligne 40 : Ligne 40 :
=== Conversion ===
=== Conversion ===


La structure de données qu'on a est définie par une liste de points, chaque point étant une liste de 3 éléments, les coordonées x, y et z du point.
La structure de données qu'on a est définie par une liste de points, chaque point étant une liste de 3 éléments, les coordonnées x, y et z du point.
puis par une liste de faces, chaque face étant une liste contenant les index des points associés.
puis par une liste de faces, chaque face étant une liste contenant les index des points associés.


Notre triangle ressemblerait alors à ça :
Notre triangle ressemblerait alors à ça :


<strong>[[x0,y0,z0], [x1,y1,z1], [x2,y2,z2]]</strong>
vertex = <strong>[[x0,y0,z0], [x1,y1,z1], [x2,y2,z2]]</strong>


<strong>[[0,1,2] ]</strong>
faces = <strong>[[0,1,2] ]</strong>

On parcourt la liste des faces et on parcourt chaque face. On a donc des arêtes définies par pointA = faces[i][j] et pointB = faces[i][(j+1)%len(faces[i])]


=== Déconversion ===
=== Déconversion ===

Version du 10 mai 2024 à 21:47

Élève : Vetea STOLL

Tuteur : Jacques Olivier Lachaud

Définitions

Surface

Structure de données demie arêtes ailées

Description

Dans cette structure de données les arêtes (ex point A et B) sont décomposée en 2 demie arêtes (A vers B et B vers A) sont définies implicitement par un indice.


Chaque demie arête a une demie arête suivante (next) une demie arête opposée (opp) un point vers lequel la demie arête pointe (to_vertex) et l'indice de la face à laquelle la demie arête est associée (face), si il n'y a pas de face on mettra -1 par convention.

Pour accéder à ces paramètres on définie des listes de longueur n avec n nombre de demie arêtes pour chaque paramètre.


Les faces ont une demie arête associée de façon arbitraire (w_face) également pour les points (w_vertex).

On fera également des listes pour ces paramètres de longueur n avec n nombre de face et nombre de points.


La structure de donnée d'un triangle ressemblera à ça :

Triangle demie ailee.png

next : [2,5,4,1,6,3]

opp : [1,0,3,2,5,4]

to_vertex : [1,0,2,1,0,2]

face : [0,-1,0,-1,0,-1]


w_face : [0]

w_vertex : [1,3,5]

Conversion

La structure de données qu'on a est définie par une liste de points, chaque point étant une liste de 3 éléments, les coordonnées x, y et z du point. puis par une liste de faces, chaque face étant une liste contenant les index des points associés.

Notre triangle ressemblerait alors à ça :

vertex = [[x0,y0,z0], [x1,y1,z1], [x2,y2,z2]]

faces = [[0,1,2] ]

On parcourt la liste des faces et on parcourt chaque face. On a donc des arêtes définies par pointA = faces[i][j] et pointB = faces[i][(j+1)%len(faces[i])]

Déconversion

Algorithmes de subdivision de surface

Catmull-Clark

Autres aglorithmes

algo1

Pourquoi cela donne une surface lisse ?