Chaque ligne doit diviser l'avion en "intérieur" et "contour"; vous pouvez le découvrir en utilisant la méthode habituelle du produit interne.
Déplacez toutes les lignes vers l'extérieur d'une certaine distance.
Considérez toutes les paires de lignes voisines (lignes, pas segment de ligne), trouvez l'intersection. Ce sont le nouveau sommet.
Nettoyez le nouveau sommet en supprimant toutes les parties qui se croisent. - nous avons quelques cas ici
a) Cas 1:
0--7 4--3
| | | |
| 6--5 |
| |
1--------2
si vous le dépensez par un, vous obtenez ceci:
0----a----3
| | |
| | |
| b |
| |
| |
1---------2
7 et 4 se chevauchent .. si vous voyez cela, vous supprimez ce point et tous les points entre les deux.
b) cas 2
0--7 4--3
| | | |
| 6--5 |
| |
1--------2
si vous le dépensez par deux, vous obtenez ceci:
0----47----3
| || |
| || |
| || |
| 56 |
| |
| |
| |
1----------2
pour résoudre ce problème, pour chaque segment de ligne, vous devez vérifier s'il chevauche avec ces derniers segments.
c) cas 3
4--3
0--X9 | |
| 78 | |
| 6--5 |
| |
1--------2
dépenser par 1. c'est un cas plus général pour le cas 1.
d) cas 4
comme cas 3, mais dépenser par deux.
En fait, si vous pouvez gérer le cas 4. Tous les autres cas ne sont que des cas spéciaux avec un chevauchement de ligne ou de sommet.
Pour faire le cas 4, vous gardez une pile de vertex. - tout comme ce que vous faites en coque convexe.