AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Und nochmal Kollision - Ball zu Ball
Thema durchsuchen
Ansicht
Themen-Optionen

Und nochmal Kollision - Ball zu Ball

Ein Thema von Airblader · begonnen am 21. Dez 2005 · letzter Beitrag vom 23. Dez 2005
 
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#15

Re: Und nochmal Kollision - Ball zu Ball

  Alt 23. Dez 2005, 09:37
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
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz