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 alsint
zeichnen.
-
EOutOfResources schrieb:
Die Werte weiterhin als
float
speichern aber alsint
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.