[SDL] MoveTo() Funktion schreiben
-
Hallo,
ich versuche zur Zeit eine Funktion zu schreiben um eine fließende Bewegung hinzubekommen. Hier erstmal der Code.
// fp ist die erste Position, mt wohin es soll. int MoveTo(int i, int fp_x, int fp_y, int mt_x, int mt_y) { int cx = fp_x - mt_x; int cy = fp_y - mt_y; int s = cx/cy; // "Steigung" // y_axis hat nun den y wert - hoffe ich int y_axis = s*i; return y_axis; } int main() { // ... blabla //Unsere Main Loop while(bRun) { // ... blabla if(mt_x != fp_x) { rImage.y = MoveTo(i, rImage.x, rImage.y, 102, 93); rImage.x = rImage.x; i++; // Bild zeichnen } }
Leider funktioniert es nicht. Gibt es in der SDL nicht eine Funktion die das macht was ich will?
-
Die Steigung wird nur selten eine Ganzzahl sein.
-
Die Steigung wird nur selten eine Ganzzahl sein.
Ne, sie würde immer eine Ganzzahl sein, nur immer falsch gerundet.
Die Funktion ist jaint moveto(); // nicht double moveto();
Wenn ich aber sowas mach:
int runden(double blubb) { return blubb<0?blubb-.5:blubb+.5; }
// y_axis hat nun den y wert - hoffe ich int y_axis = s*i; return runden(y_axis);
Ist der Verlauf doch nicht exakt, oder?
-
Das Zwischenergebnis s ist ja bei dir schon eine Ganzzahl, daher ist das Ergebnis evtl. falsch, z.B. bei cx = 4 und cy = 5 kommt 0 heraus.
Daher berechne es besser so:int y_axis = (cx*i) / cy;
Den Sonderfall cy = 0 solltest du auch noch abfangen...