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 2 von 4     12 34      
Benutzerbild von freak4fun
freak4fun

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

Re: 2 kreise sollen bei kontakt abprallen

  Alt 27. Okt 2004, 16:17
ö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
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
 
#12

Re: 2 kreise sollen bei kontakt abprallen

  Alt 27. Okt 2004, 16:20
öhm...

könntest du vielleicht mal posten was du schon hast?
... son bisschen quelltext vielleicht

und wenn hier mal jemand ne komplette lösung posted bekommt man was aufn deckel weil doch jeder selbst alles rausfinden bzw wissen soll

aber keine angst wir helfen dir schon


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
StefanDP

Registriert seit: 11. Apr 2004
294 Beiträge
 
#13

Re: 2 kreise sollen bei kontakt abprallen

  Alt 27. Okt 2004, 16:57
Da steht es 1:1 wie es geht (also von der Physik seite betrachtet):
http://www.tobias-nopper.de/BillardG...physik-de.html

Ist aber eher ein exterm mathematisches Problem!
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

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

Re: 2 kreise sollen bei kontakt abprallen

  Alt 27. Okt 2004, 17:19
Zitat von freak4fun:
und wenn hier mal jemand ne komplette lösung posted bekommt man was aufn deckel weil doch jeder selbst alles rausfinden bzw wissen soll
Was ja auch völlig korrekt so ist. Sonst ist der Lerneffekt = 0, und darum geht es in der Schule nun mal .

Man wird, wenn man in etwa an das Verhalten von Billiardkugeln heranzukommen, um Mathe+Winkel+Vektoren nicht herum kommen. Ich bin mir nichtmal mehr sicher, ob ich die Grundlagen dazu schon in der 11. Klasse komplett hatte .
Alles in allem finde ich die Verwendung von Shapes schon... naja, reichlich unschön. Aber wenn es denn sein soll .

Das Problem mit der Geschwindigkeit:
Du hast für jeden Kreis ja einen Ortsvektor, der dir angibt wo sich dein Kreis befindet, und zudem einen Richtungsvektor der jeden Bewegungsschritt auf den Ortsvektor addiert wird. Die Länge dieses Richtungsvektors ist die Geschwindigkeit des Kreises (in Pixel pro Intervall).
Wenn du den Aufprallwinkel dann mal hast, und man davon ausgeht, dass beide "Kugeln" die gleiche Masse haben, dann verteilen sich nach dem Stoß die beiden Richtungsvektoren beider Kugeln gleichmäßig. => Beide Kugeln sind nachher gleich schnell. Und das sogar nur bei einem direkten Stoß. Wenn die Kugeln dezentral aufeinanderprallen, dann verlagert sich der Impuls wiederum anders.

Wenn du dann auch noch möchtest dass man simuliert, dass bei einem Stoß ja ein Teil der Energie in Wärme übergeht, und somit der Geschwindigkeit fehlt, dann musst du die Richtungsvektoren auch noch um einen Faktor kleiner skalieren.

Alles in allem ist der dezentrale Stoß von Kugeln ein nicht zu unterschätzendes Thema. Und mit der Programmiereung braucht man imho erst garnicht anzufangen, wenn man die Theorie dahinter nicht vertanden hat.
Wenn du weisst welche Größen du kennst, und wie sie miteinander zu verrechnen sind, dann ist der eigentliche Code die wenigste Arbeit, da Delphi ja syntaktisch so schön an der Mathematik orientiert ist .

Wenn du die Aufgabe so von deinem Lehrer hast, würde ich ihn mal fragen ob das sein Ernst war - oder dich selbst, ob du im Unterricht alles mitbekommen hast .

Nach fertigem Code fragen bringt dich idR kein Stück weiter - und zudem wirst du den hier wahrscheinlich auch nicht bekommen.


@StefanDP: Dort ist aber auch nur der zentrale Stoß beschrieben. Der ist deutlich einfacher, aber reicht für eine brauchbare Billard-Simulation leider nicht.
Zwar läuft das mit den Richtungen gleich ab, aber das Problem mit der Geschwindigkeitsverteilung bleibt.
Ist die Frage wie weit man gehen will . (Der Tisch hat nen Reibungskoeffizenten, die Kugeln auch z.B. )

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

Registriert seit: 23. Nov 2002
389 Beiträge
 
Delphi 5 Standard
 
#15

Re: 2 kreise sollen bei kontakt abprallen

  Alt 27. Okt 2004, 17:58
@dizzy: Habe (leider) kein Physik mehr und deshalb steig' ich da gerade nicht hinter.
Wie kann denn die Länge vom Richtungsvektor die Geschwindigkeit festlegen? Mein Problem ist jetzt wohl, dass ich es rein mathematisch betrachte. Würde mich jetzt mal interessieren (der Rest ist soweit logisch).
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

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

Re: 2 kreise sollen bei kontakt abprallen

  Alt 27. Okt 2004, 19:00
Wenn der Richtungsvektor die Verschiebung von Zeitpunkt A nach Zeitpunkt B darstellt, dann stellt seine Länge ein Maß für die Geschwindigkeit dar. Je länger dieser Vektor ist, desto weiter ist ist das Objekt vom vorigen Ort weg.

Nur ist die Einheit auf dem PC etwas anders, und nicht km/h o.ä., da (im trivialen Fall) die Entfernung in Pixeln gegeben ist, und die Zeiteinheit ist die Dauer von Zeitpunkt A bis Zeitpunkt B, die ja nicht notwendigerweise eine Stunde, oder eine Sekunde ist.
Also hat man nachher die Geschwindigkeit in px/i, mit px=Pixel; i=Messintervalllänge (z.B. wenn es per TTimer passiert, dann halt das Timerintevall).
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von Nonsense
Nonsense

Registriert seit: 23. Nov 2002
389 Beiträge
 
Delphi 5 Standard
 
#17

Re: 2 kreise sollen bei kontakt abprallen

  Alt 27. Okt 2004, 19:21
Hmm, also wenn ich da richtig verstanden habe, ist es eigentlich egal, ob ich die Geschwindigkeit in einer "normalen" Variable speichere oder als Betrag des Richtungsvektors, richtig?
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

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

Re: 2 kreise sollen bei kontakt abprallen

  Alt 27. Okt 2004, 19:40
Es kommt darauf an, wie du deine Bewegung letztendlich anstellst. Man könnte auch daher gehen und den Richtungsvektor immer gleich lang lassen, und die Geschwindigkeit darüber regeln, dass man z.B. am Timer schraubt.

Wenn du die Geschwindigkeit separat mitführst, macht das eigentlich nur zu Informationszwecken sinn, und die wäre ohnehin aus dem Richtungsvektor zu berechnen. Aber um diese Geschwindigkeitsangabe dann wirklich zu nutzen musst du deinen Richtungsvektor auf diesen Wert skalieren - und schon sind wir wieder am Anfang.

Ein kleines Bsp:

Es sei ein Punkt zum Zeitpunkt z0=0sec an den Koordinaten (3 / 3)
Zum Zeitpunkt z1=1sec sei er an den Koordinaten (6 / 7)

Die Verschiebung ist als Vektor folgendermaßen beschrieben: v = (3 / 4)
Die Länge von v ist sqrt(25) = 5.
Also ist der Punkt an z1 5 Einheiten von seiner Position an z0 entfernt.

dz sei die Zeitdifferenz zwischen z0 und z1. Somit hat der Punkt 5 Pixel Weg in der Zeitspanne dz zurückgelegt, also 5px/dz; wobei dz auch "Intervall" genannt werden kann .
In unserem Fall ist dz=1sec, also hat der Punkt 5px/s zurückgelegt.
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von Nonsense
Nonsense

Registriert seit: 23. Nov 2002
389 Beiträge
 
Delphi 5 Standard
 
#19

Re: 2 kreise sollen bei kontakt abprallen

  Alt 27. Okt 2004, 19:48
Wie das ganze funzt, weiß ich ja. Wollte nur wissen, ob es da irgendeinen special Grund für gibt, warum das über den Richtungsvektor läuft.
Trotzdem: Frage beantwortet. Danke!
  Mit Zitat antworten Zitat
Benutzerbild von fiasko
fiasko

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

Re: 2 kreise sollen bei kontakt abprallen

  Alt 27. Okt 2004, 19:53
Zitat von dizzy:
@StefanDP: Dort ist aber auch nur der zentrale Stoß beschrieben. Der ist deutlich einfacher, aber reicht für eine brauchbare Billard-Simulation leider nicht.
Ähm, die Seite hat den gleichen Ansatz wie meiner - und wieso soll das für dezentrale Stöße nicht klappen (bzw. kann du mal einen dezentralen Stoß bei 2 Kreisen aufmalen)
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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:40 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