« Surfaces polygonales et surfaces de subdivision » : différence entre les versions
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 |
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 :
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])]