Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 20:12

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Kollision
BeitragVerfasst: Mi Nov 08, 2006 17:05 
Offline
DGL Member
Benutzeravatar

Registriert: Di Nov 07, 2006 13:37
Beiträge: 83
Wohnort: Partenheim
Ich befasse mich schon viel zu lange mit folgendem Problem:

Voraussetzungen:
Ein Körper, bestehend aus 8 Punkten.
Diese Punkte sind sowohl GLOBAL als auch LOKAL, auf die Position des Körpers bezogen, als Vektoren definiert.
VERSCHIEBEN und ROTIEREN des Körpers ist kein Problem.
Entgegen des Titels ist die Abfrage der Kollision auch kein Problem.

Problem:
Was passiert mit dem Körper, bzw. den Punkten, wenn er/sie mit etwas kollidieren, d.h. ein Impuls auf einen oder mehrere dieser Punkte ausgeübt wird?


Ich könnte mir vorstellen, dass ich die Position des Körpers entlang der Normalen der Ebene, mit der er kollidiert ist, verschieben muss.
Doch um welche Achsen und welche Winkel rotiere ich ihn?


Ich hoffe, die Physiker und Geometriker unter euch können mir helfen ...


Herzlichsten Dank im Vorraus,

Conan

_________________
THE TRUTH IS NOT OUT THERE!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 08, 2006 18:39 
Offline
DGL Member

Registriert: So Sep 26, 2004 05:57
Beiträge: 190
Wohnort: Linz
Bei Google findest du da unter "rigid body motion" einiges.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Nov 08, 2006 20:24 
Offline
DGL Member

Registriert: Di Jun 06, 2006 09:59
Beiträge: 474
Du kannst auch statt dessen eine Physikengine wie "Newton" einbinden, denn die realistische Simulation von Kollisionen und Drehungen ist nicht gerade trivial. z.B. sind Körper auf Grund der Zentrifugalkraft nicht in der Lage um alle Achsen stabil zu rotieren, sondern selbst bei ungestörter Rotation kann sich die Achse verändern. Halbwegs realistisch aussehende Kollision ist dagegen bedeutend einfacher zu implementieren.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 10, 2006 14:06 
Offline
DGL Member
Benutzeravatar

Registriert: Di Nov 07, 2006 13:37
Beiträge: 83
Wohnort: Partenheim
Vielen Dank für die Hilfe.

Zitat:
Halbwegs realistisch aussehende Kollision ist dagegen bedeutend einfacher zu implementieren.


@The-Winner: Das würde mir ja schon ausreichen. Doch wie implementiere ich eine halbwegs realistisch aussehende Kollision?

_________________
THE TRUTH IS NOT OUT THERE!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 12, 2006 14:55 
Offline
DGL Member

Registriert: Mo Nov 06, 2006 19:15
Beiträge: 172
Ich hab mich mit der Materie noch nicht befasst, aber aus Erfahrung würde ich sagen, dass du es alleine hinbekommst sobald du verstehst wie die Physik dahinter aussieht. Stell dir am besten vor dein Objekt läge friedlich und still im Raum und plötzlich knallt eine Wand gegen eine Ecke. Wenn du so anfängst kannst du dich voll auf die Wirkung auf das Objekt konzentrieren und musst nicht die Geschwindigkeit und Rotation des Objekts mit der Wirkung des Aufpralls verrechnen.
Das machst du dann im zweiten Schritt, in dem du die Wirkung der Wand (Objekt fängt an sich zu bewegen/drehen) auf die ursprüngliche Drehung und Geschwindigkeit addierst.

Also die Idee mit der Normalen der Wand war schon gut. Am besten du findest noch heraus, wie viel Masse das Objekt um diese Normale hat. Wenn du das Objekt mittig triffst prallt es ohne Drehung ab, doch wenn es außen getroffen wird musst du ja wissen, zu welcher Seite es kippen wird. Das ist dann ein Fall für die Masseträgheit. Mach dir mal ein par Gedanken mit einem Brett:
Du bewegst ein ruhendes Brett im All auf der rechten Seite mit 10 m/s nach oben, wie verhält sich die linke Seite?
Da Geschwindigkeit immer relativ zum Betrachter ist, verhält sie sich jedenfalls genauso, als wenn diese statt der rechten Seite mit 10 m/s nach unten bewegt hättest. Das Massezentrum scheint mir die tragende Rolle zu spielen. Aber vielleicht hast du ja schon eine Lösung :wink:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 13, 2006 14:19 
Offline
DGL Member
Benutzeravatar

Registriert: Di Nov 07, 2006 13:37
Beiträge: 83
Wohnort: Partenheim
Vielen Dank an Lyr, The-Winner und an NerdIII.
Ich werde mir die Ansätze zu Herzen nehmen.

Conan

_________________
THE TRUTH IS NOT OUT THERE!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 13, 2006 15:31 
Offline
DGL Member

Registriert: Mo Nov 06, 2006 19:15
Beiträge: 172
Ich wünsche dir viel Erfolg!
Ich sehe gerade vor meinem inneren Auge wieder das Brett im schwerelosen Raum und glaube sehr fest, dass wenn ich es an einer Seite packen würde, um es um seinen Schwerpunkt zu rotieren, sich der Schwerpunkt nicht bewegen würde.
1. Die gesamte Masse wäre auf einer Seite meines 'Zugvektors'. Es gibt also auf der anderen Seite kein Gegengewicht, dass mit seiner Trägheit die freie Rotation des Bretts behindern könnte.
2. Der Zug geht nie in Richtung des Schwerpunkts, anders gesagt: Der Zugvektor ist orthogonal zum Vektor zum Schwerpunkt. Daher wird auf den Schwerpunkt keine Kraft ausgeübt und er bleibt wo er ist.
3. Mach erstmal eine Physik in 2D :D . Das hilft oft ungemein die Probleme zu verstehen, die sich dahinter verbergen und hat mir auch mehrfach weitergeholfen. Die 3D-Formeln sind fast gleich aufgebaut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 13, 2006 15:48 
Offline
DGL Member

Registriert: Mo Dez 20, 2004 08:58
Beiträge: 442
Wohnort: Mittweida (Sachsen)
Tjaaaaa Hartes Brot.
Zunächst würde ich den Vertex des Körpers ermitteln, der kollidiert.
Dann den aktuellen Richtungsvektor dieses Punktes (mit Geschwindigkeit) abhängig von Bewegungn und Rotation des Körpers und dem Abstand des Vertex zum Schwerpunkt berechnen.
Danach kann man aufgrund normaler Abprallregeln den Vektor ausrechnen, in den sich dieser Vertex in Zukunft bewegen WILL.
Diesen neuen Richtungsvektor benutzt man nun, um die Neue Bewegung/Rotation des Körpers auszurechnen (Thema Hebelarm). Die neue Richtung des Vertex ist zozusagen ein Impuls, der auf den Körper einwirkt. Genaue Physik hab ich aber jetzt nicht im Kopf, sollte man evtl. ein schlaues Buch fragen, ist aber reine Kinetik.

_________________
Manchmal sehen Dinge, die wie Dinge aussehen wollen, mehr wie Dinge aus, als Dinge.
<Esmerelda Wetterwax>
Es kann vorkommen, dass die Nachkommen trotz Abkommen mit ihrem Einkommen nicht auskommen und umkommen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 13, 2006 17:53 
Offline
DGL Member
Benutzeravatar

Registriert: Di Nov 07, 2006 13:37
Beiträge: 83
Wohnort: Partenheim
Ich will ungern jemanden enttäuschen, aber für diese Berechnung werde ich wohl die NGD-Engine verwenden.
Ich erfinde zwar das Rad gerne neu, aber wozu so viel Zeit investieren, wenn das ohnehin schon jemand getan hat (und das viel besser, als ich es je könnte !).

Vielen Dank nochmal,
Conan

_________________
THE TRUTH IS NOT OUT THERE!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 14, 2006 21:02 
Offline
DGL Member

Registriert: Mo Nov 06, 2006 19:15
Beiträge: 172
Du fauler Hund :lol:


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 15 Queries | GZIP : On ]