Jede Linie sollte die Ebene in "innen" und "Umriss" aufteilen. Sie können dies mit der üblichen Methode des inneren Produkts herausfinden.
Bewegen Sie alle Linien um ein Stück nach außen.
Betrachten Sie alle Paare von Nachbarlinien (Linien, kein Liniensegment) und finden Sie den Schnittpunkt. Dies sind die neuen Eckpunkte.
Bereinigen Sie den neuen Scheitelpunkt, indem Sie alle sich überschneidenden Teile entfernen. - Wir haben hier ein paar Fälle
(a) Fall 1:
0--7 4--3
| | | |
| 6--5 |
| |
1--------2
Wenn Sie es um eins ausgeben, haben Sie Folgendes:
0----a----3
| | |
| | |
| b |
| |
| |
1---------2
7 und 4 überlappen sich. Wenn Sie dies sehen, entfernen Sie diesen Punkt und alle Punkte dazwischen.
(b) Fall 2
0--7 4--3
| | | |
| 6--5 |
| |
1--------2
Wenn Sie es zu zweit ausgeben, haben Sie Folgendes:
0----47----3
| || |
| || |
| || |
| 56 |
| |
| |
| |
1----------2
Um dies zu beheben, müssen Sie für jedes Liniensegment prüfen, ob es sich mit letzteren Segmenten überschneidet.
(c) Fall 3
4--3
0--X9 | |
| 78 | |
| 6--5 |
| |
1--------2
Ausgaben um 1. Dies ist ein allgemeinerer Fall für Fall 1.
(d) Fall 4
wie Fall3, aber um zwei ausgeben.
Eigentlich, wenn Sie mit Fall 4 umgehen können. Alle anderen Fälle sind nur Sonderfälle mit einer Überlappung von Linien oder Scheitelpunkten.
Um Fall 4 auszuführen, behalten Sie einen Scheitelpunktstapel bei. Wenn Sie Linien finden, die sich mit der letzteren Linie überlappen, drücken Sie, wenn Sie die letztere Linie erhalten. - Genau wie bei einer konvexen Hülle.