- 160 -Wollermann, Tobias: Musik und Medium 
  Erste Seite (i) Vorherige Seite (159)Nächste Seite (161) Letzte Seite (360)      Suchen  Nur aktuelle Seite durchsuchen Gesamtes Dokument durchsuchen     Aktuelle Seite drucken Hilfe 

Die Koordinaten px und py sind Elemente aus den reellen Zahlen. Die Punkte auf einem Bildschirm hingegen sind nur ganzzahlig. Das heißt, wenn ein Punkt P = (1.3,2.8) vorgegeben wird, muss dieser auf die Koordinaten gerundet werden, die den Punkt am besten repräsentieren. In unserem Fall wäre das der Punkt P = (1,3).

Eine Linie besteht aus einem Anfangspunkt P1 = (x1,y1) und einem Endpunkt P2 = (x2,y2). Gesucht sei nun der Vektor u, der von P1 nach P2 führt. Dabei gilt:

p2 = p1 + u
(10.4)

⇔ u = p - p
 2 1
(10.5)

 ( ) ( ) ( ) ( )
 ⇔ ux = x2 - x1 = x2 - x1
 uy y2 y1 y2 - y1
(10.6)

Für die gesamte Gerade ergibt sich, in der Punkt-Richtungsform mit P1 und dem Richtungsvektor u:

g : v = p1 + ru, r ∈ R
(10.7)

Da wir aber nur die Linie l und nicht die gesamte Gerade g darstellen möchten, muss r auf das Intervall [0,1] beschränkt werden. Es folgt:

l : v = p + ru, r ∈ [0,1]
 1
(10.8)

Jetzt muss nur noch festgelegt werden, wie viele Pixel auf der Linie l ›angeschaltet‹ werden sollen, das heißt in wie vielen Schritten das Intervall [0,1] durchlaufen werden soll. Benutzt man eine feste Anzahl an Schritten, hat man ein Problem: Bei kurzen Linien würde eine feste Anzahl an Schritten dazu führen, dass einige Pixel aufgrund der Rundungen mehrfach gesetzt werden. Andersherum würden bei sehr langen Linien eventuell Lücken entstehen. Folglich erscheint es sinnvoll, die Anzahl der Schritte in Abhängig von der Länge der Linie l zu wählen. Die Länge d der Linie l berechnet sich nach Pythagoras wie folgt:

 --------------------
 d = ∥P1P2∥ = ∘ (x2 - x1)2 + (y2 - y1)2
(10.9)

Mit den obigen Formeln lässt sich eine Linie einfach darstellen. In Wirklichkeit wird dies aber mit anderen Verfahren gemacht. Denn es erscheint unnötig, für jeden Punkt die x- und y-Koordinaten einzeln auszurechnen, da man die Pixel der Reihe nach setzten will. Dazu benutzt man die Geradengleichung als Funktion. Hier kann es allerdings bei sehr steilen Linien dazu kommen, dass die Pixel nicht mehr benachbart sind. Das heißt, die gezeichnete Linie weicht von der Ideallinie ab und es entstehen Lücken.

Jack Bresenham hat 1965 den nach ihm benannten Bresenham-Algorithmus6

6Vgl. dazu u. a. [Hearn und Baker(1994), S. 88–92], [Vornberger(2002), S. 21–22] oder [Vornberger und Müller(2002), S. 37ff.].
entwickelt, der den jeweils nächsten y-Wert aus dem vorherigen Wert berechnet und die Abweichung dabei berücksichtigt. Durch Antialiasing (angepasste Grauwerte in der Umgebung) kann der Pixelverlauf der Linie zusätzlich geglättet werden.


Erste Seite (i) Vorherige Seite (159)Nächste Seite (161) Letzte Seite (360)      Suchen  Nur aktuelle Seite durchsuchen Gesamtes Dokument durchsuchen     Aktuelle Seite drucken Hilfe 
- 160 -Wollermann, Tobias: Musik und Medium