mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Kreis zeichnen - GLCD - bekomme nur ein Karo?


Autor: Tobias Eckhardt (doenges2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe mich beim zeichen auf den C-Code unter wikipedia berufen und in 
mit copy/paste in mein Code hineingebastelt und bekomme nur karos!

Der funktioniert doch, oder?
Hat jemand Erfahrung mit dem Code?

void ks0108_circle(uint8_t x0, uint8_t y0, uint8_t radius)  {
  uint8_t f = 1 - radius;
     uint8_t ddF_x = 0;
     uint8_t ddF_y = -2 * radius;
     uint8_t x = 0;
     uint8_t y = radius;

     ks0108_set_pixel(x0, y0 + radius);
     ks0108_set_pixel(x0, y0 - radius);
     ks0108_set_pixel(x0 + radius, y0);
     ks0108_set_pixel(x0 - radius, y0);

     while(x < y) {
      if(f >= 0) {
           y--;
           ddF_y += 2;
           f += ddF_y;
      }
    x++;
    ddF_x += 2;
    f += ddF_x + 1;
    ks0108_set_pixel(x0 + x, y0 + y);
    ks0108_set_pixel(x0 - x, y0 + y);
    ks0108_set_pixel(x0 + x, y0 - y);
    ks0108_set_pixel(x0 - x, y0 - y);
    ks0108_set_pixel(x0 + y, y0 + x);
    ks0108_set_pixel(x0 - y, y0 + x);
    ks0108_set_pixel(x0 + y, y0 - x);
    ks0108_set_pixel(x0 - y, y0 - x);
  }
}


Gruß

Tobi

Autor: Hagen Re (hagen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beitrag "Punkte eines Kreises berechnen"

einfach mal die Suche benutzen, mit Kreis -re, oder Ellipse -re, 
bresenham -re findet sich viel.

Gruß Hagen

Autor: Tobias Eckhardt (doenges2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, aber das da oben ist der Bresenham Algorithmus!
Und er geht bei mir nicht, leider!

Autor: Hagen Re (hagen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>uint8_t f = 1 - radius;
>uint8_t ddF_x = 0;
>uint8_t ddF_y = -2 * radius;

deklariere f als int16_t oder int32_t, und ddf_x, ddf_y als int16_t. Bei 
beiden musst du mit Vorzeichen rechnen.

im verlinkten Thread schaue dir RasterCircle() von Johannes an, das ist 
defakto excakt der Source den du auch hast, eben nur mit korrekten 
Deklarationen der lokalen Variablen.

Gruß Hagen

Autor: Tobias Eckhardt (doenges2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh mann....ja klar.....logisch!

Da geht man Zeile für Zeile durch, findet keinen Fehler und vergißt 
total dabei den Zahlenraum der Variablen!

Danke

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.