Autor Beitrag
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Do 14.10.04 13:37 
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.

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6386
Erhaltene Danke: 146

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 14.10.04 13:47 
Fehlt nicht noch die Elastizität, um den Energieverlust bei der Kollision zu berechnen?
Udontknow Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2453

Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
BeitragVerfasst: 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:

_________________
JSXGraph
Udontknow Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Do 14.10.04 13:57 
Hier 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1112



BeitragVerfasst: Do 14.10.04 14:04 
Nimm doch den Impulserhaltungssatz. Spart zumindest die Quadrate.

_________________
Die Antworten auf die 5 häufigsten Fragen:
1. Copy(), Pos(), Length() --- 2. DoubleBuffered:=True; --- 3. Application.ProcessMessages bzw. TThread --- 4. ShellExecute() --- 5. Keine Vergleiche von Real-Typen mit "="!
Udontknow Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: 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 gemacht?

Cu,
Udontknow
P_G
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 75

Win XP
Delphi 7 / 8 Enterprise
BeitragVerfasst: 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 www.cambrianlabs.com/Mattias/DelphiODE/
Ich fürchte nur, die Einarbeitung in diese Materie wird etwas dauern...

Gruß, P_G
Udontknow Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mi 20.10.04 16:09 
Ah, das ist ja gut, danke! :)
kachel81
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 63



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 63



BeitragVerfasst: 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?