AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi 2 kreise sollen bei kontakt abprallen
Thema durchsuchen
Ansicht
Themen-Optionen

2 kreise sollen bei kontakt abprallen

Ein Thema von die.sandra · begonnen am 27. Okt 2004 · letzter Beitrag vom 19. Apr 2007
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#21

Re: 2 kreise sollen bei kontakt abprallen

  Alt 28. Okt 2004, 00:14
Zitat von fiasko:
kann du mal einen dezentralen Stoß bei 2 Kreisen aufmalen
Klar, siehe Anhang. Die Kugeln treffen sich ja nicht genau, sondern "schlittern" aneinander vorbei. Die Richtungsvektoren an sich zu bekommen ist imho nicht so schwer, aber wie sieht es mit der Geschwindigkeitsverteilung aus? Da gibt's mit Sicherheit auch eine Formel für... .
Aber es ist zunächst mal etwas aufwändiger als ein zentraler Stoß, bei dem ja der volle Impuls der stoßenden Kugel auf die ruhende Übergeht. Man merke auf: Eine der beiden ruht! Wenn sich beide bewegen wird's auch schon wieder was kniffliger, selbst beim zentralen Stoß.
Miniaturansicht angehängter Grafiken
graphic1.gif  
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#22

Re: 2 kreise sollen bei kontakt abprallen

  Alt 28. Okt 2004, 02:03
moin,

Das Thema Kollision von Kugeln hatten wir schonmal. Hatte mich damals mal damit beschäftigt ... bin aber leider zu keinem 100%ig korrekten Ergebnis gekommen. (Ansatz wie von fiasko beschrieben) Aus einem mir unbekannten Grund werden nur senkrechte Kollisionen richtig berechnet, bei allen "schiefen" Varianten treten Fehler auf?!
Ins besondere bei mehr als zwei Kugeln werden die Dinger immer schneller!

lezter Post im alten Thread (der Rest ist meines Erachtens nicht wirklich relevant): hier
Peter Enenkel
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#23

Re: 2 kreise sollen bei kontakt abprallen

  Alt 28. Okt 2004, 03:23
Also ich hab jetzt mal etwas rumgegoogled, und bin doch sehr erstaunt darüber, dass es zu dem dezentralen Stoß von Kugeln erbärmlich wenig Material gibt.
Diese Tatsache, und das Bischen (wenig brauchbares) was ich gefunden habe zeigen mir, dass dies ein garnicht sooo leichtes Thema ist.

Aus einer Überlegung heraus würde ich behaupten, dass wenn eine Kugel steht, und von einer anderen getroffen wird, die stoßende Kugel einen Anteil ihres Impulses auf die ruhende Kugel überträgt, und zwar mit:

Impuls*cos(alpha)

wobei alpha der Winkel zwischen der Geraden durch die Mittelpunkte der Kugeln, und dem Richtungsvektor der stoßenden Kugel ist; und zwar zum Zeitpunkt des Aufpralls.

Die stoßende Kugel verliert diesen Impuls, so dass die Impulserhaltung gewahrt wäre. "Impuls" ist hier übrigends gleich mit Geschwindigkeit, verknüpft mit einer Richtung. Also entspricht der Impuls einem Vektor => dem Richtungsvektor. Seine Länge muss je Kugel entsprechend o.g. Zusammenhangs skaliert werden.

Was noch ein ganz anderes Problem ist: In welche Richtung zeigen denn die Vektoren nach dem Stoß?

Und was noch viel schlimmer ist: Wenn sich beide Kugeln bewegen, dann kann das noch mal ekeliger werden.

Es kann gut sein, dass ich mich durch das ganze Zeug dass ich gefunden habe jetzt völlig verbohrt bin, und dass das eigentlich voll einfach ist... ist ja auch nicht mehr so früh .
Mich würde eine Gesamtlösung für den dezentralen vollelastischen Stoß zweier nicht ruhender Kugeln jetzt auch sehr interessieren... da habt ihr was angerichtet .

Au Backe... wenn da noch Rotation+Gleitreibung+Haftreibung mit bei kommen... ich frage mich, wie so ein Billardspiel das macht... kann doch eigentlich garnicht so schwer sein, oder?



Oh warte! Idee!
Über die Vektoren könnte es tatsächlich recht einfach gehen.
Nennen wir mal einen Richtungsvektor der Kugel 1: V1 und der Kugel 2: V2
Nennen wir die Mittelpunkte der Kugeln: M1 und M2
Die Gerade durch die Mittelpunkte: G
Den Winkel von V1 zu G nennen wir a1,
den Winkel von V2 zu G nennen wir a2.

Der Impulsanteil der von Kugel 1 auf Kugel 2 übergeht ist dann:
cos(a1) (zum Zeitpunkt des Aufpralls)
Der Impulsanteil der von Kugel 2 auf Kugel 1 übergeht ist:
cos(a2) (zum Zeitpunkt des Aufpralls)

Dann ist der Richtungsvektor von Kugel 1 nach dem Stoß:
V1' = V1 + V2*cos(a2) - V1*(1-cos(a1))
Und der von Kugel 2:
V2' = V2 + V1*cos(a1) - V2*(1-cos(a2))

Damit wäre der Impuls gewahrt, und die Richtungen dürften auch stimmen. Ein wenig Kopfzerbrechen bereitet mir der Cosinus, aber ich hab das mal für ein paar Fälle von Hand gerechnet, und das sah nicht so falsch aus. (Vorausgesetzt ich hab zu dieser doch zu sehr fortgeschrittenen Zeit keine bösen Patzer gemacht .)

Ich geh jetzt erstmal an der Matratze horchen .
N8 alle!
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
die.sandra

Registriert seit: 27. Okt 2004
3 Beiträge
 
#24

Re: 2 kreise sollen bei kontakt abprallen

  Alt 28. Okt 2004, 09:06
Hallo!
Ich glaube ich hatte mich etwas falsch ausgedrückt. Das soll keine simulation eines billardspiels werden!!!!
Nochmal:
1. aufgabe war: ein shape (kreis), der sich nur nach rechts bewegt. der läuft dann aber irgendwann
aus dem form1 raus. also muss der abprallen, sowohl rechts also auch links. also hatte ich dann
nen kreis der von links nach rechts läuft und umgekehrt.
2. jetzt sollte der kreis schräg laufen, also runter+rechts und so weiter. natürlich sollte der
kreis dann auch wieder an den rändern von form1 abprallen.
*war ganz schön happy als ich das dann schon mal geschafft hatte*
3. jetzt sollte ein zweiter kreis genau das gleiche machen . no problem
4. jetzt sollten die shapes aneinander abprallen, sprich genauso wie sie es an den rändern machen.
ich weiß aber nicht was ich programmieren soll, was die kreise machen sollen wenn sie sich
berühren. habe schon mal geprüft ob denn der erste teil "if" richtig ist, indem ein
label dann die farbe ändert. und es ändert die farbe *jippie*

=== jetzt sollen die kugeln halt abprallen im richtigen winkel, aber auch nur das. nicht noch mit
richtiger geschwindigkeit u.ä.!!!!!!!!!!!!

Zitat:
öhm... leute meint ihr nocht des is fürn delphi-anfänger bisschen schwierig des so auf einmal zu machen? ich würde sagen eins nach dem anderen ...

prüfen wann sie sich berühren ... dann abprallen lassen(gleiche geschwindigkeit) ... die richtung ermitteln ... und dann weitersehen

Oder so wie ihr, aber da sag ich nur:

mfg
freak
GENAU DAS!!!!!!!!!

Sandra

ps: mach das hier nicht inner schule. das hier ist praktikum seit montag. was heißt ich habe montag zum ersten mal delphi gesehen!?! also ich fin das ja auch sehr (!!!) schwer, weil ich ja überhaupt keine ahnung hab was ich in delphi schreiben soll!
also wäre es mir im prinzip vollkommen egal, ob ich hierbei was lerne oder nicht. schätze mal, dass ich das sowieso ziehmlich schnell wieder vergessen werde, wenn das praktikum nächsten freitag zu ende ist. ich glaube ich werde dann auch nicht mehr was in dieser richtung machen.

Trotzdem will ich das mit den düssiligen kreisen jetzt schaffen! oder zumindest versuchen mit sehr viel hilfe von euch!


PPS: Mein quelltext
Angehängte Dateien
Dateityp: dpr project2_658.dpr (188 Bytes, 40x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#25

Re: 2 kreise sollen bei kontakt abprallen

  Alt 28. Okt 2004, 09:24
hallo

also ich finde des schon ganz gut was du geschaft hast sandra

ich hab mal son bisschen rumgespielt, aber ich denke ich mach das zu kompliziert aber bin eher der typ der erstmal beim probiren auf die fr***e fällt

ich schau mir deinen quelltext an und schau dann weiter

mfg
freak
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#26

Re: 2 kreise sollen bei kontakt abprallen

  Alt 28. Okt 2004, 09:30
hallo

ja öhm... also

sandra könntest du vielleicht alle notwendigen Dateien für delphi schicken?

Am besten (ich hoffe du hast einen) den Projektordner zippen und hochladen.

thx

mfg
freak
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#27

Re: 2 kreise sollen bei kontakt abprallen

  Alt 28. Okt 2004, 10:39
hallo

entschuldigung wegen drei mal hintereinander posten, aber ich bekomm noch nicht mal hin das des ding von der wand abprallt und hin- und herläuft. Kann mir da mal bitte jemand helfen?

(ich wollt kein neuen Thread aufmachen)


//Edit: Bitte mit Lokalen Variablen.

mfg
freak
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Benutzerbild von fiasko
fiasko

Registriert seit: 10. Dez 2002
Ort: Dresden
506 Beiträge
 
#28

Re: 2 kreise sollen bei kontakt abprallen

  Alt 28. Okt 2004, 13:39
Hallo,

Zitat von dizzy:
Zitat von fiasko:
kann du mal einen dezentralen Stoß bei 2 Kreisen aufmalen
Klar, siehe Anhang. Die Kugeln treffen sich ja nicht genau, sondern "schlittern" aneinander vorbei. Die Richtungsvektoren an sich zu bekommen ist imho nicht so schwer, aber wie sieht es mit der Geschwindigkeitsverteilung aus? Da gibt's mit Sicherheit auch eine Formel für... .
Aber es ist zunächst mal etwas aufwändiger als ein zentraler Stoß, bei dem ja der volle Impuls der stoßenden Kugel auf die ruhende Übergeht. Man merke auf: Eine der beiden ruht! Wenn sich beide bewegen wird's auch schon wieder was kniffliger, selbst beim zentralen Stoß.
hast du dir mal meinen Ansatz bzw. den von der Web-Site richtig durchgelesen? Sowohl ich als auch die haben einen dezentralen Stoß aufgemalt und dann einfach über das Skalarprodukt den Anteil für den direkten Stoß! Wenn man jetzt natürlich noch die durch die Haftungreibung entstehende Rotationsenergie mit reinrechnet wird es aufwendiger - aber das soll hier wohl doch nicht sein.

@die.sandra:

Wenn ich das richtig verstanden habe soll die Kugel nur an den Wänden abprallen? Das ist dann ganz einfach: du hast doch irgendwo 2 Variablen für die X und die Y verschiebung für jeden Takt?! Wenn das ding an die Decke oder am Boden abprallt ändert sich das vorzeichen beim Y, sonst beim X und fertig.

Wenn du den Code der Unit des Formulars postest können wir auch noch genauer helfen, nur die .dpr reicht nicht
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#29

Re: 2 kreise sollen bei kontakt abprallen

  Alt 28. Okt 2004, 14:18
Zitat von fiasko:
hast du dir mal meinen Ansatz bzw. den von der Web-Site richtig durchgelesen?
Scheinbar nicht... aber guck mal auf die Uhrzeit meines Posts, da kann man das nicht mehr erwarten . Das Verfahren scheint mir schlüssig.

Bei meiner Idee von gestern ist mir als ich im Bett lag auch noch ein Denkfehler aufgefallen. die Formeln müssten eigentlich so heissen:
V1' = V1*(1-cos(a1)) + V2*cos(a2)
V2' = V2*(1-cos(a2)) + V1*cos(a1)

Jetzt wäre natürlich interessant, ob der Weg über das Skalarprodukt und mein Gewurschtel identisch sind (zumindest fände ich das interessant ). Was aber klar sein dürfte ist, dass sich der Weg über's Skalarprodukt deutlich performanter proggen lässt als mein Trigonometrie-Haufen - wobei man, wenn man sich anschaut wie man den Winkel zwischen 2 Vektoren ausrechnet, sich die ganzen Cosinüsse () auch sparen kann!

Zitat von die.sandra:
jetzt sollen die kugeln halt abprallen im richtigen winkel, aber auch nur das. nicht noch mit
richtiger geschwindigkeit u.ä.!!!!!!!!!!!!
Mit dem richtigen Winkel hast du auch gleich die richtige Geschwindigkeit. Die gehören einfach zusammen .

lg,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#30

Re: 2 kreise sollen bei kontakt abprallen

  Alt 28. Okt 2004, 15:29
Hab mal beide Methoden verglichen, und sie sind im Endeffekt gleichwertig. Hab mal angehängt, wie sich das Ganze sehr einfach, und ohne jede trigonometrische Funktion lösen ließe. Da viele Redundanzen drin sind, ist das auch recht flott programmierbar (schätze ich). Das dürfte im Wesentlichen die Lösung sein, der man öfter begegnet, die aber immer so sau-blöd verklausuliert wird. Zumal die meisten da anfangen mit Winkel und irgendwelchen Wörtern die kein Mensch braucht, aber keiner schreibt einfach mal ne endgültige Formel hin!

Ich hoffe jetzt mal, dass das einigermaßen richtig ist, dass ich mich nachher mit meinem 1001. Post () nicht zum Brot mache .
Miniaturansicht angehängter Grafiken
graphic1_329.gif  
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz