Que sont les polygones dégénérés? Comment vérifier si une paire de polygones donnée est dégénérée ou non?
9
Que sont les polygones dégénérés? Comment vérifier si une paire de polygones donnée est dégénérée ou non?
Réponses:
Un polygone est dégénéré si certains de ses sommets se trouvent l'un sur l'autre. Par exemple, le triangle (0,0), (0,1), (0,0) est dégénéré. Il a 3 côtés et 3 sommets, mais deux des sommets se répètent. Il est possible de répéter un sommet plusieurs fois (par exemple (0,0), (0,0), (0,0) est un autre triangle dégénéré). Par définition, vérifier si un polygone est dégénéré ou non est facile.
Mais à quoi servent les polygones dégénérés? Une application de l'accélération graphique (dessin 3D) est la suivante:
Dans le dessin 3D, les GPU utilisent normalement la triangulation pour rendre les images. La raison (simple) d'utiliser des triangles est qu'ils sont des objets 2D les plus simples possibles, ils n'ont donc pas besoin de beaucoup de matériel.
Si nous voulons dessiner une image 3D complexe, par cette limitation du GPU, nous devons la décomposer en plusieurs triangles. Mais si nous appelons le GPU pour rendre chaque triangle séparément, ce serait très lent (en raison du nombre d'appels). Ainsi, la bande triangulaire est utilisée pour réduire le nombre d'appels au GPU. Une bonne explication des bandes triangulaires peut être trouvée dans la documentation Microsoft: bandes triangulaires , vous pouvez également voir le wiki pour: bande triangulaire .
Mais le problème se pose lorsque nous voulons dessiner deux objets séparés dans une bande. Dans ce cas, les triangles dégénérés sont utiles. Le GPU peut détecter les triangles dégénérés et ignorer leur dessin. Nous pouvons donc connecter deux bandes distinctes avec un triangle dégénéré.
En général, si nous avons composants différents, de sorte que nous avons déjà leurs bandes de triangle correspondantes, nous pouvons tous les dessiner par un seul appel au GPU. Cela entraîne une utilisation supplémentaire de la mémoire, mais c'est un compromis entre le nombre d'appels au GPU pour le rendu et la surcharge liée à l'utilisation d'un triangle dégénéré supplémentaire.n
la source
Un polygone dégénéré est celui qui a une zone nulle.
la source
Comme d'autres l'ont noté, cela dépend. De manière générale, un polygone n'est pas dégénéré s'il n'a pas de points anormaux, mais cela repousse simplement le problème d'une étape; qu'est-ce qui est "anormal"?
La vraie réponse est qu'un polygone est dégénéré s'il viole la spécification. La réponse légèrement grossière est qu'un polygone est dégénéré s'il s'agit d'un cas de bord que votre algorithme ne peut pas gérer.
Voici un exemple du monde des SIG. La spécification des fonctionnalités simples de l'OGC a une définition très précise de ce qui rend un polygone "valide". Citant de la section 6.1.11.1:
la source