Das Setzen für den anderen Ball hatte ich auch drin, aber änderte nicht wirklich was
Habs ja nun wie gesagt mit Hilfe des BillardGL Source selber hinbekommen, aber trotzdem Danke für die Hilfe
Werde nachher den Code posten.
air
Edit:
So hier isser...hab mich entschlossen, die Variablennamen doch so zu lassen, wie sie in BillardGL auch heißen.
Delphi-Quellcode:
dx, dy, dx2, dy2, richtung, abstand2, skalarp, kraftx, krafty: extended;
...
dx2 := Other.FPosition.X - Self.FPosition.X;
dy2 := Other.FPosition.Y - Self.FPosition.Y;
abstand2 := sqrt(dx2*dx2+dy2*dy2);
dx := dx2 / abstand2;
dy := dy2 / abstand2;
richtung := (Other.FMoveVector.X - Self.FMoveVector.X) * dx2 + (Other.FMoveVector.Y - Self.FMoveVector.Y) * dy2;
if richtung < 0 then
begin
skalarp := 0.9 * (Self.FMoveVector.X*dx+Self.FMoveVector.Y*dy) - (Other.FMoveVector.X*dx+Other.FMoveVector.Y*dy);
kraftx := dx * skalarp;
krafty := dy * skalarp;
Self.FMoveVector.X := (Self.FMoveVector.X - kraftx) * 1;
Self.FMoveVector.Y := (Self.FMoveVector.Y - krafty) * 1;
Other.FMoveVector.X := (Other.FMoveVector.X + kraftx) * 1;
Other.FMoveVector.Y := (Other.FMoveVector.Y + krafty) * 1;
end;
Bei dem *1 kann man jeweils einen Verlustfaktor angeben.
Nu muss ich das für mich noch umschreiben, dass die Kreise ihre Geschw. behalten und nicht, dass sie immer geändert wird - aber das sollte ich hinbekommen
Edit: Oder auch nicht
Ich müsste doch eigentlich nur diesen Vektor auf der Mittelpunktlinie (im obigen Bild Vektor b also Beispiel) gleichlang haben wie den Bewegungsvektor des Kreises (also V2), oder?
Und im BillardGL Code wäre das dann wohl skalarp. Soweit zur Theorie...die Praxis hängt bei mir grad etwas *fg*
(Übrigens: Was soll denn das 0.9 als Faktor vor skalarp darstellen? Ein Verlustfaktor kanns eig. nich sein, da der ja später erst dazukommt...)
air