Was ist am folgendem falsch ?
Die Kugeln kollidieren ab und zu sogar ganz richtig.
Manchmal gehen sie aber ineinander rein und kollidieren gar nicht.
Angle ist in Bogenmass angegeben.
Delphi-Quellcode:
function GetDistanceOfPoints(X1, Y1, X2, Y2: Single): Single;
begin
result := sqrt(sqr(X1-X2) + sqr(Y1-Y2));
end;
procedure CheckCollision(const AIndex: Integer);
var i: Integer;
LTemp: Single;
begin
for i := 0 to FBalls.Count-1 do
begin
if i <> AIndex then
begin
if GetDistanceOfPoints(TLvBall(FBalls[i]).X, TLvBall(FBalls[i]).Y,
TLvBall(FBalls[AIndex]).X, TLvBall(FBalls[AIndex]).Y) -
(TLvBall(FBalls[AIndex]).Radius + TLvBall(FBalls[i]).Radius) <= 0 then
begin
TLvBall(FBalls[AIndex]).Angle := GradToRad(360 + (180 - RadToGrad(TLvBall(FBalls[AIndex]).Angle)));
TLvBall(FBalls[i]).Angle := GradToRad(360 + (180 - RadToGrad(TLvBall(FBalls[i]).Angle)));
end;
end;
end;