| |
Bestimmung der Abstände s und t:
s = (dy/dx) * (Xi+1) Yi
Y-Wert bei S
Y-Wert der Ideallinie bei (Xi+1)
t = (Yi+1) (dy/dx) * (Xi+1)
Y-Wert der Ideallinie bei (Xi+1)
Y-Wert bei T
Wenn t =< s, also (s - t) >= 0, wird Punkt T angesteuert.
Wenn t > s, also (s - t) < 0, wird Punkt S angesteuert.
Differenz:
s-t = ((dy/dx) * (Xi+1) -Yi) - ((Yi+1)-(dy/dx)*(Xi+1))
s-t = (dy/dx)*(Xi+1) -Yi -Yi-1+(dy/dx)*(Xi+1)
s-t = 2*(dy/dx)*Xi + 2*(dy/dx) - 2*Yi - 1
Multiplikation mit dx:
dx * (s-t) = 2*dy*Xi + 2*dy 2*dx*Yi - dx
dx * (s-t) = 2*(dy*Xi - dx*Yi + dy) - dx
Wie aus der Zeichnung zu erkennen ist, kann nur in X- bzw. in Y-Richtung
inkrementiert werden, das bedeutet, dass die Steigung der Geraden zwischen 0 und
1 liegt (dx >= dy). Außerdem müssen dx und dy positiv sein.
Hieraus folgt, dass das Vorzeichen von dx*(s-t) durch dx nicht beeinflusst wird,
und man kann ersetzen:
di = dx*(s-t)
di1= 2*(dy*Xi - dx*Yi + dy) - dx
(1)
Hier ist das Vorzeichen von di1 das Kriterium:
di1 < 0: Linie parallel zur X-Achse
di1 >= 0: Linie im Winkel von 45 Grad
Die bisherige Form des Bresenham-Algorithmus muss für Steigungen > 1
erweitert werden (vgl. Lit.). Bisher wurde beim Zeichnen immer in X-Richtung
inkrementiert, und das Ergebnis der Gleichung bestimmte, ob auch in Y-Richtung
inkrementiert wird. D.h., die beiden nächstmöglichen Punkte liegen einen Schritt
weiter in X-Richtung übereinander. Will man Linien mit einer Steigung > 1 zeichnen,
so liegen die beiden nächstmöglichen Punkte einen Schritt weiter in Y-Richtung
nebeneinander. Entsprechend wird immer in Y-Richtung inkrementiert und mithilfe
der Gleichung entschieden, ob auch in X-Richtung inkrementiert wird.
Seite 3 von 9
|  |
|
| |
|
|