Kollisionsberechnung mit linien
-
Alles ist 2D
Ich schreibe für kleines Spiel eine eigene Kollisionsberechnung, die allerdings auf Linien basiert, und nicht auf Objekten mit Volumen, bzw im 2D mit Inhalt.
Ich habe nun 4 Vertexkoordinaten, die mir nun jeweils Anfang und Ende einer Linie angeben. Die erste Linie ist die, welche die Bewegung des Spielers selbst hergibt. Die zweite Linie ist die Wand, bzw der Boden. Ob sich die Linien Kreuzen oder nicht wird auch schon berechnet, ich weiß auch wo. Nur weiß ich jetzt nicht, wie ich mein Objekt abprallen lassen kann, also dass es in der richtigen Richtung weiter fliegt. Wie kann ich das Berechnen.
-
Nur weiß ich jetzt nicht, wie ich mein Objekt abprallen lassen kann, also dass es in der richtigen Richtung weiter fliegt. Wie kann ich das Berechnen.
Es gibt da solche Verhältnisse wie "Eintrittswinkel = Austrittswinkel". Abgesehen davon kannst du dich noch mit physikalischen Stößen einarbeiten.
-
ja kommt mir bekannt vor, nur wie berechnet man das, das ist meine Frage. Ich brauche ja keine Winkel, sonders Koordinaten. Die Stöße denke helfen mir hier nicht weiter, denn hier wird ja eigentlich nichts angestoßen, das könnte ich verwenden, wenn zwei Objekte gegeneinander prallen.
Edit: Eigenltich würde ja eine einfache Spiegelung reichen, aber irgendwie hab ich da nichts auf reiner koordinatenbasis gefunden.
-
Krux schrieb:
ja kommt mir bekannt vor, nur wie berechnet man das, das ist meine Frage. Ich brauche ja keine Winkel, sonders Koordinaten. Die Stöße denke helfen mir hier nicht weiter, denn hier wird ja eigentlich nichts angestoßen, das könnte ich verwenden, wenn zwei Objekte gegeneinander prallen.
Naja, du hast ja von "abprallen" gesprochen und da geht es sofort um Stöße. Abgesehen davon, kannst du natürlich alle Ablenkungen, die über gerade Wege verlaufen, über Winkel berechnen. Aber erklär es sonst noch mal etwas genauer, was du willst.
-
Strecke-1 durch zwei Punkte bestimmt: p1,p2
Strecke-2 durch zwei Punkte bestimmt: p3,p4Strecke 1 ist die Bewegung meines Objektes für eine Zeiteinheit, aber noch ohne Kollision
Strecke 2 ist die Wand gegen die das Objekt stößt, also eine Strecke, die Strecke 1 Schneidet, und zwar in Punkt S.Jetzt ist es mein anliegen p2' zu bestimmen, also der Punkt, wo sich das Objekt nach der Zeitenheit befindet, wenn man die Kollision berücksichtigt.
Dazu würde es eigenlich reichen, wenn man p2 an der Geraden durch p3 p4 Spiegelt. Aber wie mache ich das?
-
Prallt dein Objekt senkrecht auf die Wand, hast du zwischen der Wand und der Bewegungslinie deines Objektes zwei Winkel von 90 Grad. Alles andere liefert dir einen Winkel alpha und einen Winkel 180 Grad - alpha. Geträu dem Satz "Einfallswinkel = Austrittswinkel" kannst du dann doch ganz genau den Austrittswinkel bestimmen. Und den Eintrittswinkel kannst du relativ leicht über deine Koordinaten bestimmen. Oder übersehe ich dabei jetzt etwas elementares?
-
Ok, ich habs wohl in das Falsche forum geschrieben. Mein Problem ist nicht Mathe, sondern, wie man das speziell in C++ unsetzt, ohne auf abstrakte dinge zugreifen zu können, also ich brauche was konkretes. Oder ich glaub ich bin heute einfach nur zu müde. Ich hatte nur gehofft, dass es eventuell eine einfache lösung aus der Vektorrechnung gibt, oder einen link, der das Thema konkret aus Programmiertechnischer sicht behandelt. Und bitte wiederhohle dich nicht wieder.
-
Schlaf lieber noch mal eine Nacht drüber und werd dir genau darüber klar, was du genau wissen möchtest
Wenn du dir dann im klaren bist, was du genau wissen möchtest bzw. was du brauchst, dann schreib vorher am besten nochmal, was du bist jetzt überhaupt schon fertig hast und wo das Problem konkret liegt, denn offensichtlich haben wir uns jetzt nur im Kreis gedreht und weder ich noch irgendjemand anderes im Forum kann Gedanken lesen
Und keine Sorge: ich werde mich schon nicht wiederholen, denn es hätte eh keinen Sinn.