Nachdem ich jetzt Ewigkeiten Dateien gesichtet und gesäubert habe, Ordner neu sortiert, Doku's zu meinen Projekten geschrieben und Schaltpläne gezeichnet habe mußte jetzt etwas programmieren zur Entspannung her.
Also habe ich mir die Aufgabe gestellt, endlich einmal einen Spirographen für kleine Spielereien auf einem Mikrocontroller ohne Gleitkommaunterstützung zu machen (so entspannt war es nicht, weil ich endlich auch ein ST7789 Display sauber an einem CH32V003 zum Laufen bringen wollte und das SPI hierfür etwas gezickt hat, bis ich ie richtige Einstellung hierfür gefunden hatte).
Der Hintergrund also ist, dass das auf einem Controller mit sehr wenig Flash (V003 hat nur 16 kByte) laufen soll und ein Aufruf der Sinusfunktion aus math.h schon alleine nicht in den Speicher passt. Dann habe ich eine Lösung für einen komfortableren Spirographen, der mit Festkommaarithmetik aber Sinus berechnet, aber im Spirographen dann doch Gleitkomma benötigt.
Also mal das Hirn anstrengen und überlegen wie das im Flash knapper geht (soll ja auch im CH32V003 noch laufen).
Das Ergebnis kann man in der angehängten Source sehen. Sinus wird aus einer LookUp-Tabel entnommen und der Spirograph wird hieraus gefüttert. Display hat hier Auflösung 240x240.
Eine Erhöhung der scale in der LookUp-Table von 3 auf 4 feste Nachkommastellen bringt keine Verbesserung der Qualität des Graphen.
Insgesamt benötigt der Spirograph inkl. eines einzelnen Aufrufs 740 Byte im Speicher (inkl. der LookUp-Table die alleine schon 180 Byte benötigt).
Jetzt weiß ich, dass manche Informatiker / Mathematiker nahezu magische Fähigkeiten haben sehr ausgefeilte Methoden zu präsentieren.
Hier jetzt die Frage an die Mathematiker / Informatiker: Das geht doch bestimmt noch kürzer, vllt. ohne LookUp-Table, oder ?
