Jedesmal wenn die Kantenliste verändert wird, wird auch die Spanliste neu aufgebaut. Im Prinzip könnte die Bitmap auch direkt aus der Kantenliste gezeichnet werden; da aber diese Liste komplexer ist, ist dies nicht unbedingt die schnellere Version. Zudem wird der Code für das Zeichnen der Bitmap aus der reduzierten Spanlist einfacher; er lässt sich mit weniger Aufwand in Assembler schreiben.
Der Algorithmus läuft über alle Kanten der Spanliste. Bei jeder
Kante entscheidet er, ob eine Veränderung des Bildes eintritt. Dies
ist der Fall, wenn die aktuelle Kante den Start eines neuen Polygons
bewirkt und sichtbar ist, oder wenn die aktuelle Kante das Ende des
sichtbaren Polygons bewirkt. Alle andern Kanten können ignoriert
werden. Abbildung 2.5 zeigt den Pseudocode des
Algorithmus, der Pseudocode unserer Implementation ist in
5.17 auf Seite
zu finden.
27
Abbildung 2.5: Pseudocode des Erstellen der Spanliste
Um den etwas komplizierteren Algorithmus verständlich zu machen zeigen wir anhand zweier Beipiele seine Funktionsweise:
):
Abbildung 2.6: Beispiel 1: Erstellen der Spanliste
):
Abbildung 2.7: Beispiel 2: Erstellen der Spanliste