Richtung float x,y auf int x,y Feld zeichnen



  • Hallo!

    Angenommen ich habe einen Punkt, welcher sich bei jeder Neuberechnung (z.B. getriggert durch einen Timer) in eine Richtung (x;y) bewegen soll.
    Diese Richtung (x;y) ergibt sich aus einer Winkelangabe, und enthält damit Kommawerte, z.B. 20° währen (x;y)=(0,939....;0,342....).
    Angenommen ich möchte diesen Punkt nun immer um eine Länge ( =sqrt(x2+y2) ) von insgesamt 1 oder 2 verschieben pro Zyklus, dann hab ich ein ziemliches Problem, denn ich muss Richtung*Länge multiplizieren, und da kommt bei so kleinen Verschiebwegen leider ein ziemlich Müll raus - da ja auf dem Zeichenfeld nur int Werte akzeptiert werden.
    Bei obigem Beispiel würde sich z.B. eine Richtung von (1,0) ergeben, was 0° und nicht 20° entspricht!

    Welche Abhilfen gibt es für das Problem?



  • Die Werte weiterhin als float speichern aber als int zeichnen.



  • EOutOfResources schrieb:

    Die Werte weiterhin als float speichern aber als int zeichnen.

    Manchmal fällt einem auf der Suche nach der perfekten Lösung die einfachste nicht ein...danke!



  • harry3 schrieb:

    da ja auf dem Zeichenfeld nur int Werte akzeptiert werden.

    Das stimmt nicht so ganze, durch die AA-Routinen kommen die GraKas heute sehr gut auf Sub-Pixel Ebene zurecht. Damit hat man wesentlich weichere Bewegungen.


Anmelden zum Antworten