Energieverlust bei einer Kollision durch Elastizität
-
Hallo.
Ich arbeite mit Elastizitäts-Variablen von 0 bis 1, da diese sich ja super in die Berechnung des Ausfallwinkels einbauen lassen.
Nun habe ich mir überlegt, wie ich mit ZWEI Elastizitäts-Variablen umgehe. Also von beiden miteinander kollidierenden Objekten.
Die erste Idee, die mir in den Sinn kam, war die beiden Werte lediglich zu multiplizieren.
Ergibt das Sinn?Und dasselbe mit Reibung.
Achja, da Reibung nicht relativ zur Geschwindigkeit ist(also wenn die Brems-"beschleunigung" 15m/s^2 ist, dann ist es ja egal, ob die Geschwindigkeit 100m/s oder 200m/s ist, da die Geschwindigkeit um den gleichen Wert abnimmt), wollte ich fragen, wie ihr Reibung implementieren würdet.
Als Beschleunigung und dann einfach vom der Geschwindigkeit abziehen?
Als Kraft und daraus dann die Beschleunigung berechnen?
Reibungskoeffizient und daraus die Beschleunigung berechnen?Freue mich über jede Antwort
-
Von was redest du? Anscheinend nicht von einer wissenschaftlichen Simulation, nehme ich an. Worum geht es?
Wenn es um was semi-realistisches geht, guck doch einfach die Formeln nach. Reibung ist keine Konstante. Reibung geht linear mit der Geschwindigkeit (sehr, sehr kleine Geschwindigkeiten. Kugel in Honig.) oder quadratisch mit der Geschwindigkeit (bei allen "normalen" Geschwindigkeiten).
Bei der Kollision gibt es keine einfachen Möglichkeit aus zwei Elastitätsparametern eine dritte Stoßkonstante (den Restitutionskoeffizient) zu berechnen, denn das Modell mit den zwei Elastitätsparametern ist einfach von Grund auf unrealistisch. Eine realistischere Modellierung wäre eine Matrix, die angibt, wie zwei Objekte miteinander kollidieren.
(Gegenbeispiel zu deinem jetzigen Modell: Tischtennisball und Hüpfball. Tischtennisball auf einer harten Oberfläche ist fast perfekt elastisch. Der Hüpfball nur mittelmäßig. Tischtennisball auf Gras ist hingegen fast perfekt inelastisch. Der Hüpfball auf Gras ist hingegen fast genau gleich wie auf einer harten Oberfläche. [Hier spielt natürlich auch die Masse eine Rolle, die das Beispiel noch krasser aussehen lässt, als es ist. Aber auch wenn man das rausrechnet bleibt der Fakt, dass der Restitutionskoeffizient nicht so ganz einfach vorherzusagen ist])
-
Oh, darüber hab ich noch gar nicht nachgedacht oO
Dasselbe mit der Elastizität.Naja, eine aufwendige Simulation soll es nicht sein.
Mehr ein Spiel mit simplen physikalischen Gesetzen.
Ich wollte die Elastizität nur einbringen um es ein bisschen variabler zu machen.
Ich werd einfach ElastizitätA * ElastizitätB und ReibungA + ReibungB benutzen.
Das sollte zumindestens einigermaßen "realistisch" rüberkommen.
Falls ich irgendwann mal Objekte wie ein Tischtennisball und Gras habe, werde ich mir Sonderregeln überlegen.
-
Ich sollte noch etwas Wichtiges ergänzen.
Es geht nur um die Kollision eines dynamischen und eines statischen Objekts.
Die Elastizität-Werte sind dabei zu unterscheiden.
Bei einem dynamischen Objekt, wäre z.B. 0.5 ein Hüpfball.
Bei statischen Objekten ist 1 der Standartwert und ist für alle harten Objekte wie Holz und Stein gedacht(es soll keine Simulation werden, nur ein Spiel mit einer simplen Physik-Engine^^). Also wäre dann die neue Geschwindigkeit 0.5 * 1 des Ausfallswinkels. Sähe dann auch ganz gut aus.
Wenn wir z.B einen Teppich nehmen mit dem Wert 0.5, dann hätten wir nochmal die Hälfte, was auch ganz okay aussehen würde.
-
SeppJ schrieb:
Reibung geht linear mit der Geschwindigkeit (sehr, sehr kleine Geschwindigkeiten. Kugel in Honig.) oder quadratisch mit der Geschwindigkeit (bei allen "normalen" Geschwindigkeiten).
Gleitreibung ist bei "normalen" Geschwindigkeiten nicht von der Geschwindigkeit abhängig. Und auch nicht von der Kontaktfläche sondern nur vom Reibungskoeffizienten und der Kraft mit der die beiden Gegenstände zusammengedrückt werden.
http://de.wikipedia.org/wiki/Amontonssche_Gesetze
-
coder++ schrieb:
es soll keine Simulation werden, nur ein Spiel mit einer simplen Physik-Engine^^
Gibt's nen speziellen Grund dass du keine fertige Engine ala Box2D verwendest?
-
Ja, das hat etwas damit zu tun, dass sehr viele Objekte getestet werden müssen und ich gezielt nur die Richtigen Objekte raussuchen kann.
-
hustbaer schrieb:
SeppJ schrieb:
Reibung geht linear mit der Geschwindigkeit (sehr, sehr kleine Geschwindigkeiten. Kugel in Honig.) oder quadratisch mit der Geschwindigkeit (bei allen "normalen" Geschwindigkeiten).
Gleitreibung ist bei "normalen" Geschwindigkeiten nicht von der Geschwindigkeit abhängig. Und auch nicht von der Kontaktfläche sondern nur vom Reibungskoeffizienten und der Kraft mit der die beiden Gegenstände zusammengedrückt werden.Ich bezog mich auf die Reibung am umgebenden Medium, wie ein Fisch im Wasser oder ein Auto in Luft (Stoke'sche und Newton'sche Reibung*). Man sieht: Die Sache ist nicht ganz trivial, man vergisst leicht irgendwelche Einflüsse. Zum Beispiel gibt es noch Haftreibung, die nur überkommen werden muss, wenn zwei Körper anfangs gegeneinander ruhen, dann aber ziemlich stark ist. Oder Rollreibung, die ähnlich ist wie Gleitreibung, aber eben kleiner, wenn der Körper rollt, statt gleitet. Und sicher noch vieles andere mehr, das wir beide vergessen haben. edit: Da ich gerade mal nachgeschaut habe auf Wikipedia, da gibt es dieses schöne Bild:
http://en.wikipedia.org/wiki/File:Drag_sphere_nasa.svg
Viel Spaß, das genau nachzumodellieren.coder++ schrieb:
Ja, das hat etwas damit zu tun, dass sehr viele Objekte getestet werden müssen und ich gezielt nur die Richtigen Objekte raussuchen kann.
Was für Objekte? Was für "richtige" Objekte? Dann hat dein Programm doch einen tieferen Sinn? Falls ja, solltest du dir mehr Mühe geben.
*: In Retrospektive liegt meine Wahl da dran, dass für mich bei der Arbeit eben nur diese Arten von Reibung zählen (oder genauer, nur die Stoke'sche Reibung), so dass ich ganz vergessen habe, dass es noch was anderes gibt. Aber ich sehe bei genauerem Nachdenken, dass die Formen der Reibung, die einem im Alltag wohl am häufigsten auffallen, nicht dazu zählen.
-
Naja es geht um Blöcke.
Ähnlich wie bei "Minecraft".
Da nun gleichzeitig so um die 1000x100x1000 Blöcke im Speicher liegen, kann ich damit keine Physik-Engine benutzen.
Ich suche mir dann einfach immer die Blöcken raus, mit denen sich das dynamische Objekt überschneidet.
Und naja, ich geb mir ja Mühe, aber ich wollte die physikalischen Gesetze so einfach wie möglich halten.
-
Werd konkret. Klingt so, als wolltest du altbekanntes neu erfinden. Aber in schlecht. Bei jedem deiner Beiträge bringst du neue Begriffe ein, die mehr Fragen aufwerfen, als sie beantworten: So, so. Nun gibt es also ein dynamisches Objekt. Was ist das denn schon wieder und was willst du damit machen? Und soll das eigentlich "echte" Physik nachbilden oder soll es einfach sein? Denn einfach gar nichts machen ist auch ein physikalisches Gesetz, ein sehr einfaches sogar. Aber das willst du ja anscheinend nicht. Es soll also doch irgendetwas nachempfunden werden, fragt sich nur was.
(Ich habe übrigens keine Lust, den ganzen Tag Ratespiele zu spielen und dir Informationen aus der Nase zu ziehen. Irgendwann (bald) werde ich entnervt aufgeben.)
-
Dann will ich dich auch nicht länger nerven.
Für mich hat sich das eigentlich schon erledigt.