Oh stimmt das hatte ich ganz vergessen...
{an die Stirn schlag}
Die bei jedem Rendern aufgerufene Move-Methode des sich bewegenden Objkektes:
Delphi-Quellcode:
for i := 0 to high(Planets) do
begin
XD := XD + Grav(Planets[i].X-X, Planets[i].X-X, Planets[i].Y-Y, Planets[i].GravF);
YD := YD + Grav(Planets[i].Y-Y, Planets[i].X-X, Planets[i].Y-Y, Planets[i].GravF);
end;
X := X + XD;
Y := Y + YD;
Die Grav-Methode:
Delphi-Quellcode:
function Grav(CalcDist,DistX,DistY,GravF: Double): Double;
begin
Result := (CalcDist) / ((sqr(DistX)+sqr(DistY))/GravF);
end;
Diese Formel (natürlich ein wenig an Delphi angepasst^^) habe ich auch aus einem Physikbuch entnommen und stimmt.