Läuft auch ganz gut, wenn ich die Funktion mit (0,0,50,15) aufrufe - die
Funktion tut was sie soll. Wenn ich nun von 50,15 (=>x1,y1) aus in
positive Richtung (=>Größere Werte) fahre, wird dies auch getan (z.B.
(50,15,51,25)).
Sobald ich in negative Richtung fahren will - und selbst wenn's nur ein
Schritt ist - wird zuerst zu 0,0 gefahren und dann von dort aus zu der
Position - nur woran liegts?
In putpixel gebe ich die Parameter per RS232 aus. Daher konnte ich
erkennen, dass die Funktion putpixel(0,0) aufgerufen wird.
Könnt ihr mir helfen? Ich habe inzwischen locker 5
Bresenham-Implementationen ausprobiert - und alle haben andere Probleme
:-(
Die Codebeispiele von Wikipedia (en) habe ich auch schon durch :(
Vielen Dank für eure Hilfe,
Sascha
Hi Sascha,
bist du da noch dran?
Welche "Negative" Richtung geht denn nicht? Es gibt 6 verschiedene (A -
F):
1
\ | /
2
\ C | B /
3
\ | /
4
D \ | / A
5
\ | /
6
----------+----------> +X
7
/ | \
8
E / | \ H
9
/ | \
10
/ F | G \
11
/ V \
12
+Y
Beispiele für die Bereiche:
A (50, 50)->(70, 40)
B (50, 50)->(60, 30)
C (50, 50)->(40, 30)
D (50, 50)->(30, 40)
E (50, 50)->(30, 60)
F (50, 50)->(40, 70)
G (50, 50)->(60, 70)
H (50, 50)->(70, 60)
Die funktionierenden Linie
(0,0,50,15) liegt in Bereich H
bzw.
(50,15,51,25) in Bereich G
Je nachdem welche Richtungen nicht gehen, kann man sehr leicht
eingrenzen welche Bedingungen oder Vorzeichen nciht stimmen.
Gruß
Kai