kurve plotten auf glcd

Gast #365831
Lesenswert?
• ▲
▼
früher gabs ja immer den schönen plot befehl in basic. Ich versuche
gerade das nachzuahmen. Damit war es möglich recht nette funktionen
darzustellen wenn man für JEDEN x-wert auf einen passenden y-Wert
hatte.

mein versuch ist folgendermaßen:

int cycles=0;
while(1)
{
  if(cycles>127) {
    glcdclearscreen();
    cycles=0;
  }

  float sine=32+(sin(cycles)*3);
  int value=(int)sine;
  if(value>0)
    glcdputpixel(cycles,value);

  cycles++;
}

der sinus ist erkennbar, allerdings hat er große lücken, ich denke mal
das ist mein cast to int. Hat jemand ne bessere idee?
Gast #365832
Lesenswert?
• ▲
▼
Hallo Philip,

was meinst Du mit großen Lücken?

Ich würde mal folgendes probieren:

1.) richtig runden: int value = (int)(sine+0.5);

2.) Mit der Frequenz des Sinus spielen (sin(cycles)*freq). Es können
nunmal nur diskrete Werte auf dem Display dargestellt werden. Du   mußt
Dir überlegen, dass Du nur 128 Pixel in X-Richtung hast. Wieviele
brauchst Du, um eine Periode ansehnlich darzustellen? Ist doch klar,
dass Du nur 128/Perioden_auf_dem_Display Pixel für jede angezeigte
Periode hast.


Gruß, Nils

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.