Die zu zeichnenden Grafikobjekte werden typischerweise in einem Bereich spezifiziert der grösser als das dargestellte Fenster ist
Objekte die sich ausserhalb des Viewing Bereichs befinden, müssen nicht mehr weiterverarbeitet werden:
- unnötige Rasterisierung
- Rechenproblemen bei sehr grossen z-Koordinaten
- Scissering:
- es werden alle Pixel berechnet
- aber nur diejenigen gezeichnet die im Fenster liegen
- Temporärer Buffer
- das ganze Objekt wird in einen temporären Buffer gezeichnet
- der Buffer wird kopiert
- Analytische Berechnung
- derjenigen Teile, die im Innern des Fensters liegen
- Die ganze Ebene wird in Bereiche unterteilt
- Durch Vergleichen der Bereiche in denen die Endpunkte liegen \newline wird entschieden ob die Linie einfach akzeptiert oder abgelehnt werden kann
- Ist dies nicht der Fall wird die Linie in zwei Teile geteilt, \newline wovon eines abgelehnt wird und mit dem anderen wird zu Schritt 2 zurückgekehrt
1001 | 1000 | 1010 oberhalb (Bit 1)
-----+------+----- unterhalb (Bit 2)
0001 | 0000 | 0010 rechts (Bit 3)
-----+------+----- links (Bit 4)
0101 | 0100 | 0110
Parallele Implementation möglich
Der Algorithmus wird für jede Begrenzungslinie einmal durchlaufen
- Betrachtet wird jeweils der aktuelle Punkt S, sowie der nächste Punkt P
- 4 Konfigurationen von S und P sind möglich
- Je nach Konfiguration werden 0-2 Eckpunkte des neuen Polygons ausgegeben
\begin{figure}[H] \includegraphics[width=0.6\textwidth]{images/08A-sutherland-hodgman.png} \end{figure}
Schnittpunkt der Linie zwischen S und P mit der Teilungsgerade zwischen aussen und innen