Mein Code sieht jetzt so aus:
Delphi-Quellcode:
angle := (180/sizeX*(posX+sizeX/2-pBall.posX+sizeX/2));
v := sqrt(pBall.vX*pBall.vX+pBall.vY*pBall.vY);
pBall.vX := v*cos(angle*PI/180);
pBall.vY := v*sin(angle*PI/280);
Alle Variablen sind vom Typ extended. Bereits nach wenigen Kollisionen wird der Ball spürbar langsamer, auch wenn ich den Schläger nicht bewege und der Ball immer im Winkel von 90° abprallt. Liegt dies an der Ungenauigkeit der Fließkommawerte oder an einem Rechenfehler?
Bei den vielen Berechnungen vermute ich, dass es die Ungenauigkeiten sind, lässt sich, sofern ich richtig liege da etwas rechentechnisch machen? Wird intern genauer gearbeitet, so dass es sinnvoll wäre das alles in eine Berechnung zu packen?
Ansonsten würde ich den Geschwindigkeitsverlust mit einem Beschleungungsfaktor ausgleichen, oder gibt es da eine bessere Lösung?