Aus der Eventtabelle wird eine Kantenliste generiert. Diese Liste
ändert bei jedem Event. Zur Verwaltung der Kanten verwenden wir eine
doppelt verkettete Liste. Wenn wir nur konvexe Polygone zulassen,
lassen sich die Kanten auf jeder Bildschirmzeile (= Scanline) zu
Paaren von Kanten des gleichen Polygons ordnen. Wir sammeln alle
Kanten, die zwischen zwei Scanlines entfernt werden oder neu
dazukommen und speichern sie in einem Buffer. Dann werden alle Kanten
zuerst entfernt und darauf die neuen eingefügt. Dies hat den Vorteil,
dass die anschliessende Suche nach Pseudoevents (Überschneidungen
zweier Kanten auf dem Bildschirm) keine Ausnahmen beachten muss,
damit keine Events hinter dem gerade behandelten entstehen können.
Schliesslich werden alle noch alleinstehenden Kanten mit ihrem Partner
verknüpft. Abbildung 2.3 zeigt den
Pseudocode des Erneuern der Kantenliste. Abbildung 5.16
auf Seite
zeigt den Pseudocode unserer
Implementation.
27
Abbildung 2.3: Pseudocode des Erneuern der Kantenliste
Abbildung 2.4: Erneuern der Kantenliste