Każda linia powinna podzielić płaszczyznę na „wewnątrz” i „kontur”; możesz to sprawdzić za pomocą zwykłej metody produktu wewnętrznego.
Przesuń wszystkie linie na zewnątrz o pewną odległość.
Rozważ całą parę sąsiednich linii (linii, a nie segmentu linii), znajdź przecięcie. To są nowe wierzchołki.
Oczyść nowy wierzchołek, usuwając wszystkie przecinające się części. - mamy tu kilka spraw
(a) Przypadek 1:
0--7 4--3
| | | |
| 6--5 |
| |
1--------2
jeśli wydasz je o jeden, otrzymasz:
0----a----3
| | |
| | |
| b |
| |
| |
1---------2
7 i 4 pokrywają się. Jeśli to zobaczysz, usuniesz ten punkt i wszystkie punkty pomiędzy.
(b) przypadek 2
0--7 4--3
| | | |
| 6--5 |
| |
1--------2
jeśli wydasz to na dwa, masz to:
0----47----3
| || |
| || |
| || |
| 56 |
| |
| |
| |
1----------2
aby rozwiązać ten problem, dla każdego segmentu linii należy sprawdzić, czy pokrywa się on z późniejszymi segmentami.
(c) przypadek 3
4--3
0--X9 | |
| 78 | |
| 6--5 |
| |
1--------2
wydatki przez 1. jest to bardziej ogólny przypadek dla przypadku 1.
(d) przypadek 4
taki sam jak przypadek 3, ale wydatki o dwa.
Właściwie, jeśli potrafisz obsłużyć przypadek 4. Wszystkie pozostałe przypadki są tylko specjalnymi przypadkami z pewnym nakładaniem się linii lub wierzchołków.
Aby zrobić przypadek 4, trzymasz stos wierzchołków .. naciskasz, gdy widzisz linie nakładające się na drugą linię, pisz ją, gdy dostajesz drugą linię. - dokładnie tak, jak robisz w wypukłym kadłubie.