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
Benutzerbild von dizzy
dizzy

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

Re: 2 kreise sollen bei kontakt abprallen

  Alt 27. Okt 2004, 16: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
Antwort Antwort


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 02:52 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