Hallo
Wie zeichne ich am Besten eine Linie aus einzelnen Pixeln? Ich habe
eine Funktion, mit der ich einzelne Pixel setzen kann. Auf dieser Basis
möchte ich eine Funktion schreiben, mit der ich eine Linie zeichnen
kann. Das Display ist aus einem Nokia 3310 (84x48 Pixel) und ich
programmiere mit WinAVR.
Ich probiere es gerade über die Geradengleichung, aber so wirklich toll
ist das nicht. Für y=m*x benötige ich erstens 16-Bit (Festkomma 10.6)
für die Steigung m (minimale Steigung ist ja 2/84). Zweitens muss ich x
dann ja auch mit 2/84 auflösen, damit ich jedes y mitbekomme, wenn ich
y=m*x rechne. Ergo muss ich zwei 16-Bit Zahlen multiplizieren und das
für jedes Pixel - dauert ein bißchen lang :-( Oder ist da irgendwo noch
ein Denkfehler drin?!
Habt ihr einen Ansatz für mich? Ich hab im Archiv die Routine vom 6100
gefunden. Die ist aber etwas spärlich kommentiert wenn man nicht weiß,
wie's funktioniert...
Grüsse,
Steffen
Hallo
Vielen Dank für die Tipps und danke für den Code! Er funktioniert
einwandfrei! Ich musste ihn nur ein bißchen anpassen (u.a. xerr, yerr
und dist als uint8_t deklarieren, da er sonst mit den 84x48 nicht
klarkommt).
Ihr habt mir eine Menge Arbeit erspart :-)
Grüsse,
Steffen
Also, wenn ich mir den Algorithmus hier anschaue, meine ich, dass diese
"Anpassungen" grundsätzlich nötig sind, dass der Code allgemein
funktioniert.
Außerdem muß man noch vor der Bestimmung der größten Distanz den Betrag
von dx und dy bilden und mit diesen Werten weiterrechnen.
Sonst werden nur Linien, die von oben links nach unten rechts gehen,
richtig angezeigt.
Heißt also, im Wikipedia, wo ich auch gerade nachgeschaut habe, stimmt's
auch nicht...
Wie seht ihr das?
Gruß
Boxi