next up previous contents
Next: 7.4.3 Benutzerinteraktion Up: 7.4 XWindow-Treiber Previous: 7.4.1 Grobabschneiden

7.4.2 Abbildung kontinuierlicher Größen auf Pixel

In diesem Abschnitt soll nur die Diskretisierung von zweidimensionalen Punkt-Koordinaten besprochen werden. Die Diskretisierung von Linien und Flächen ist Aufgabe der untersten Schichten einer graphischen Bibliothek und somit nicht Gegenstand des hier vorgestellten Programms. Sehr wohl betroffen ist aber die Spezifikation von Linien und Flächen, da diese ja über Punktkoordinaten bezeichnet werden!

Bei Darstellung über den XWindow-Treiber versucht dieser während des
pedViewSetViewport-Aufrufes, den vorgeschlagenen Projektionsausschnitt dahingehend zu ändern, daß den Achsenskalen (ruler) konstante Strichabstände (gemessen in Pixel) zukommen. Dies erfolgt aus ästhetischen Gründen, die auf den Gesamteindruck des Programms betreff seine Robustheit und Zuverlässigkeit von Bedeutung sind.

Im Detail wird dieses günstige Verhältnis bestimmt, indem (für die Achsenrichtungen unabhängig voneinander) die Zahl der für eine Zehnerpotenz der Koordinatenlänge zur Verfügung stehenden Pixel und die entsprechende Koordinatenlänge durch zehn geteilt werden, solange die verbleibende Pixelanzahl größer als der Wert minTickDistance ist. Dann wird noch versucht, durch 5 oder zumindest durch 2 zu teilen. Die verbleibende Pixelzahl wird auf eine ganze Zahl abgerundet. Die Skalierung wird dann auf Basis des Verhältnisses der entsprechenden Koordinatenlänge, die eine dezimal runde Zahl ist, zu der Pixelzahl durchgeführt.

Ein weiterer wichtiger Punkt ist die Vermeidung von Auswirkungen numerischer Ungenauigkeiten. Um Abweichungen der Rundungsrichtung wenigstens nahe von ,,runden`` Zahlen zu verhindern, werden diese daher auf die Pixelmitte abgebildet (s. Abb. 7.5).

   figure2389
Abbildung 7.5: Linkes oberes Eck des Zeichenfensters bei (A) ungünstiger Diskretisierung: die beiden Werte bezeichnen verschiedene Bildpunkte; und (B) mit verbesserter Diskretisierung: die beiden Werte bezeichnen den selben Bildpunkt.



Martin Knaipp
Wed Jun 12 15:41:33 MET DST 1996