Ich habe ein 128x64 Display und will auf der rechten Hälfte ein analoges Zeigerinstrument (Uhr, Drehzahlmesser, Tacho oder so) darstellen. Der Kreis samt Beschriftung wird einfach einmal als Bild gespeichert. Aber wie mache ich das mit dem Zeiger? Ich will bei einem Winkel von 270° schon so ca. 100 verschiedene Zeigerstellungen darstellen. Am besten mit einer Zeigerbreite von 3 Pixel damit er nicht zu klein wirkt. Waagerecht würde der Zeiger also so aussehen: 000000000000000000000000000000000 00000000000000000000000000000000000 000000000000000000000000000000000 Jede Mögliche Zeigerstellung in einem einzelnen Bild zu speichern ist ziemlich speicherfressend (Habe nur einen Mega32). Oder wäre es besser von jedem Pixel des Waagerechten Zeigers ausgehend, mit Sinus und Cosinus die Position des Pixels um x Grad gedreht zu berechnen? An Zeit hätte ich ca. 2MIPS zur Verfügung, das sollte doch für so eine Berechnung reichen. Oder habt ihr eine bessere Idee so einen Zeiger zu berechnen.
Logisch. Ich täte den Zeiger mit dem klassischen Bresenham-Linien-Algorithmus malen. Sinustabelle für die Richtungen ist eh klar. Wenn die Linienstärke 3 Pixel sein soll, würde ich jeden Pixel der Linie noch mit mit 4 oder acht Pixel umgeben, womit eine Linienstärke von drei entsteht: x xBx x oder xxx xBx xxx wobei x die umgebenden Pixel sind und B das "Bresenham-Pixel". Je nach Richtung kann man da natürlich noch optimieren, um weniger x-Pixel zeichnen zu müssen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.