Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#3

Re: DelphiProjekt: Billard mit Reibungskugeln

  Alt 6. Dez 2009, 16:57
Ich denke mal, dein Ansatz hier ist falsch:


Delphi-Quellcode:
                 
procedure Reibungskugel.bewegeDich (pGeschwindigkeit:Zahl);
begin
  zGeschwindigkeit:=zGeschwindigkeit-zReibung;
  INHERITED bewegeDich(zGeschwindigkeit);
end;
Du ziehst bei jeder Iteration eine Konstante Zahl von der Geschwindigkeit ab. Damit wird die Geschwindigkeit irgendwann mal negativ und auch unbegrenzt größer. Da ich nicht weiß, wie ein Buntstift auf negative Geschwindigkeit reagiert, kann ich das Ergebnis auch nicht vorhersagen.

Physikalisch ist Reibung proportional zur aktuellen Geschwindigkeit. Das kannst du einfach durch Multiplikation mit einem konstanten Faktor erreichen - z.B. so:

Delphi-Quellcode:
                 
procedure Reibungskugel.bewegeDich (pGeschwindigkeit:Zahl);
begin
  zGeschwindigkeit:=zGeschwindigkeit*(1 - zReibung);
  INHERITED bewegeDich(zGeschwindigkeit);
end;
Uwe Raabe
  Mit Zitat antworten Zitat