Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Algorithmus : "Elastischer Stoß"
Udontknow - Do 14.10.04 13:37
Titel: Algorithmus : "Elastischer Stoß"
Hallo allesamt!
Daß ich Physik hatte, ist schon eine Weile her, ich bräuchte mal eure Hilfe. :)
Ich habe zwei Objekte (Meshes, also Drahtgittermodelle) im 3-dimensionalen Raum. Jedes Objekt hat eine Matrix, die Infos über die Position und Ausrichtung im Raum enthält, und eine, über die die Bewegung pro Frame realisiert wird. Der Massenschwerpunkt ist der Nullpunkt der Objekte. Die Masse eines Objekts ist ebenfalls bekannt.
Wenn es nun zu einer Kollision (der Kollisionspunkt für jedes Objekt ist halbwegs genau bekannt) kommt, sollen die Abläufe nach den gegebenen physikalischen Gesetzen erfolgen, die Bewegungsmatrizen müssen sich dementsprechend ändern.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| I3DObject=interface ... property Mass:Single read GetMass write SetMass; property Matrix:TD3DXMatrix read GetMatrix write SetMatrix; property DeltaMatrix:TD3DXMatrix read GetMatrix write SetMatrix; end;
procedure GenerateCollideMatrices(Obj1,Obj2:I3DObject;CollisionPoint1,CollisionPoint2:T3DXVector3;var NewMatrix1,NewMatrix2:TD3DXMatrix) begin end; |
Diese Infos sollten meiner Meinung nach alles sein, was man für eine realistische Darstellung benötigt, oder?
Diese Prozedur gilt es nun mit Leben zu füllen, und da habe ich irgendwie einen totalen Blackout. :oops:
Cu,
Udontknow
jasocul - Do 14.10.04 13:47
Fehlt nicht noch die Elastizität, um den Energieverlust bei der Kollision zu berechnen?
Udontknow - Do 14.10.04 13:49
Äh, ich dachte ein elastischer Stoss hat keinen kinetischen Energieverlust zur Folge...? :oops: Wie gesagt, ist lange her mit Physik.
Naja, gut, wenn man den Algo verallgemeinern will, kann man das natürlich noch mit einbeziehen.
Cu,
Udontknow
raziel - Do 14.10.04 13:52
Udontknow hat folgendes geschrieben: |
Äh, ich dachte ein elastischer Stoss hat keinen kinetischen Energieverlust zur Folge...? |
War ich mir bis vor 5 Minuten auch noch ziemlich sicher, dass dem so ist. :gruebel:
Udontknow - Do 14.10.04 13:57
Hier [
http://de.wikipedia.org/wiki/Sto%C3%9F_%28Physik%29]gibt´s die Erklärung :
Wikipedia: |
Ideal elastischer Stoß
Zwei Körper stoßen aufeinander, ohne dass dabei Energie in innere Energie umgewandelt wird, z.B. Wärme oder Deformationsenergie.
In Wirklichkeit gibt es diesen Stoß natürlich nicht, aufgrund diverser Faktoren, wie z.B. der Reibung. |
Cu,
Udontknow
.Chef - Do 14.10.04 14:04
Nimm doch den Impulserhaltungssatz. Spart zumindest die Quadrate.
Udontknow - Do 14.10.04 16:20
Nun, ich muss sowohl Impuls- als auch Energie-Erhaltungs-Satz berücksichtigen.
Hmm, hat vielleicht jemand Erfahrung mit der
Open Dynamics Engine [
http://ode.org/] gemacht?
Cu,
Udontknow
P_G - Di 19.10.04 12:16
Titel: Elastischer Stoß...
Hi,
Die Open Dynamics Engine ist eine der führenden Physics Engines zur Zeit und wird von vielen 3d-Game-Engines genutzt (z.T. in modifizierter Form).
Es gibt eine Delph-Version unter
http://www.cambrianlabs.com/Mattias/DelphiODE/
Ich fürchte nur, die Einarbeitung in diese Materie wird etwas dauern...
Gruß, P_G
Udontknow - Mi 20.10.04 16:09
Ah, das ist ja gut, danke! :)
kachel81 - Mi 20.10.04 16:32
Wenn sich Deine Körper nach dem Stoß im Raum bewegen sollen benötigst Du mindestens noch 2 andere Formeln neben dem elastischen Stoß:
Reflexionssatz - wie prallen die Körper voneinander ab
Schräger Wurf - wie verläuft die weitere Flugbahn
Wenn Du den Luftwiderstand berücksichtigen willst, wirds dann nochmal komplizierter.
Tafelwerk hab ich hier, falls die Formeln benötigt werden.
Udontknow - Do 21.10.04 14:18
Nichts für ungut, aber weder der Reflexionssatz noch der schräge Wurf haben irgendetwas mit dieser Problematik zu tun, ebensowenig der Luftwiderstand. :)
Cu,
Udontknow
kachel81 - Do 21.10.04 14:27
Dann rollen die Objekte also nur auf einer Ebene aufeinander zu? Ich dachte die treffen sich "schwebend" im Raum und prallen voneinander ab oder so, naja?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!