Devoir 01 - adjacency_list.h - Sorted?

Devoir 01 - adjacency_list.h - Sorted?

par Philippe Cuerrier,
Nombre de réponses : 2

Bonjour à tous,

Est-ce que quelqu'un a eu le même type d'erreur. En utilisant le paramètre "sorted" pour avoir la liste des sommets en ordre anti-horaire, j'ai des comportements bizarres lorsque le nombre de sommets adjacents est plus grand que 4.

Exemple : non-manifold.obj, Sorted = true, Sommet #3, Output : 4 1 0 2 4 1 0 2

Exemple : non-manifold.obj, Sorted = false, Sommet #3, Output : 0 1 2 4 5 6 7 8

Pour le output, j'appelle "igl::adjacency_list" et je fais un for pour afficher.

Le sommet #3 n'est pas un boundary edge et n'est pas manifold non plus. Si vous savez plus que moi sur ça, je serais curieux d'avoir votre opinion.

Philippe Cuerrier

En réponse à Philippe Cuerrier

Re: Devoir 01 - adjacency_list.h - Sorted?

par Eric Paquette,
Le sommet 3 (en 0-based index) est non-manifold. C'est ce qui explique le problème. Pour les sommets non-manifold ainsi que les sommets d'arêtes non-manifold, le résultat peut être erroné quand on demande de trier les faces (car c'est impossible de le faire). 
L'exemple d'exécutable détecte ces cas et utilise alors la version non-orientée (sorted=false), mais s'assure que les numéros de sommets soient en ordre croissant.
En réponse à Philippe Cuerrier

Re: Devoir 01 - adjacency_list.h - Sorted?

par Philippe Cuerrier,
Si jamais ça peut aider d'autres élèves, il n'y a pas de liens entre un somment non-manifold et un edge non-manifold. Il faut checker les deux séparément.