Statischer Perspektiver Transform



  • Hallo,

    ich habe mich hier angemeldet weil ich seit einigen Tagen mehr Google als wirklich weiterzukommen, vielleicht hat ja jemand ein Tip.

    Es soll ein StarWarsWecker werden der die Uhrzeit in Groß auf einem kleinen Bildschirm ausgibt und die sich wechselnden Zahlen fliegen halt in die Ferne während die neuen von unten einfliegen, das ist auf einem kleinen 320x240px Bildschirm und hat lediglich 2 Farben und 4 wiederkehrende Grundlinien die Trapeze bilden. Angepeilt ist ein Mikrocontroller oder RaspiZero mit openGL als Notlösung.

    Ich habe das vor über 10 Jahren mal in einer Wortwörtlichen Bitschubbserei für ein JavaApplet gesehen, das muss es doch schon geben ohne auf die Mächtigen Klassen von OpenGL und Co zuzugreifen.

    Ich glaube was ich suche ist ein Nearest Neighbour algorithmus um eine Perspektive zu erzeugen der ohne viel SchnickSchnack(pro Pixel 1Bit, undynamisch) auskommt und den ich sogar für jede Ziffer als einzelne Funktion ausführen kann (mit eigenem Winkel und Co.).

    Die Frage ist nun nach was ich suchen muß, ich komme nur auf Matrixen und höhere Mathematik die mir insgesamt zu hoch ist und keine Beispiel Funktionen aus denen ich lernen könnte.



  • du moechtest also eine "Print" funktion die starwars verzerrt text rausschreibt

    "Print" geht normalerweise den string durch und ruft fuer jedes char "PrintChar" auf.
    "PrintChar" geht die pixel von einem char durch (anhand einer pixel bitmap) und gibt die pixel an "SetPixel" weiter.

    "SetPixel" uebergibt klassisch jedes pixel an den bildschirm ala PixelBuffer[x+y*WIDTH]=Color;

    fuer eine verzerrung musst du nun mit steigenden zeilen die breite verengen ala

    SetPixelStarwars(x,y,color)
      x-=WIDTH/2;//zur symmetrie zentrieren zu -160 - +160
      x-=y*SCALE*sign(x);//x zur mitte schieben
      x+=WIDTH/2;//wieder in den sichtbaren 0-320 bereich schieben
      PixelBuffer[x+y*WIDTH]=Color;
    

    wobei SCALE die verzerrungsintensitaet hat. 1 waere 45 grad, 0.5 waere also eher starwars.



  • Danke für die Antwort, ich habe jetzt erst die Antwort gesehen.

    Ja das sieht schonmal gut aus, werde es ausprobieren.. die Chars selbst sind als Bilder genauso wie beschrieben hinterlegt.

    Im Grunde meine ich eine Fake Perspektive via Trapez auf einen ganzen Bildschirmbereich in Pixelschubbserei mit eventueller Interpolation.


Anmelden zum Antworten