Mathematik online lernen im Mathe-Forum. Nachhilfe online
Startseite » Forum » Kollisionsberechnung (Liegt Punkt im Rechteck)

Kollisionsberechnung (Liegt Punkt im Rechteck)

Universität / Fachhochschule

Sonstiges

Tags: Sonstiges

 
Antworten Neue Frage stellen Im Forum suchen
Neue Frage
Chris99

Chris99 aktiv_icon

00:15 Uhr, 13.09.2010

Antworten
Hallo erstmal,

ich habe ein kleines Mathe-Problem und bin dabei auf diese Seite gestoßen :-)

Ich Programmiere ein Spiel in OpenGL und hänge gerade an der Kollisionsberechnung, bzw mir will kein möglichst einfacher bzw effizienter Weg einfallen um dieses Problem zu lösen:

(Seihe anschauliche Skizzze)

Im Spiel fährt man ein Auto (Rechteck) und sammelt Münzen ein, das Problem ist jetzt zu berechnen wann ich diese Münzen/Punkte berühre bzw die Punkte innerhalb des Rechtecks liegen und wann nicht.

Das Auto/rechteck (siehe Skizze) ist 2 Einheiten lang und 1 EInheit breit. Ich kenne jederzeit den Mittelpunkt des Autos, z.b es befindet sich jetzt gerade wie in der Skizze auf dem Punkt (2,3). Beim lenken rotiert das Auto um die Z-Achse, im Moment ist es gerade um 15° gedreht.

Zu berechnen ist nun liegt ein beliebige Punkte im beispiel nun (3,5) innerhalb des Rechtecks oder nicht.





Meine erste Idee war jetzt die 4 Eckpunkte über den Winkel mit trigonometrischen Funktionen auszurechnen, aus den Eckpunkten dann die 4 Geraden aufstellen. Somit könnte ich dann berechnen ob eine gerade den Punkt berührt. Falls nicht müsste ich dann aber immernoch irgendwie testen ob der Punkt innerhalb des Rechtecks liegt.

Bin ich damit auf dem Richtigen weg, oder gehts irgendwie einfacher und ich habe nur ein Brett vorm Kopf. Wie gesagt der Weg sollte möglichst simpel sein, da diese Berechnung mit mehreren Punkten 60 mal pro Sekunde (Spiel läuft mit 60 frames pro Sekunde) abläuft.


Vielen Dank schonmal für eure Hilfe!

zeichnung

Für alle, die mir helfen möchten (automatisch von OnlineMathe generiert):
"Ich möchte die Lösung in Zusammenarbeit mit anderen erstellen."
Online-Nachhilfe in Mathematik
Antwort
Dornathal

Dornathal aktiv_icon

11:11 Uhr, 13.09.2010

Antworten
Ich hab auch schon mal sowas ähnliches versucht zu Programmieren, und dabei hat mir
http//wiki.delphigl.com/index.php/Tutorial_Separating_Axis_Theorem
richtig geholfen. (zumindest im 2D bereich ab 3D war mein Matheverständnis noch nicht gereift genug dafür.

Antwort
Yokozuna

Yokozuna aktiv_icon

11:38 Uhr, 13.09.2010

Antworten

Hallo,

in dem Link von Dornathal wird schon kurz angedeutet, wie man das macht (Kollision eines Polygons mit einem Punkt: Projektion auf die Achsen). Das läuft dann auf eine Verschiebung und eine Drehung des Koordinatensystems hinaus (siehe beigefügtes Bild).

Zuerst verschiebt man das Koordinatensystem in den Mittelpunkt des Autos A und erhält dann für die Koordinaten (x,y) des Punktes P die neuen Koordinaten (x',y'):

x = x x A , y = y y A



Dabei sind ( x A , y A ) die Koordinaten des Automittelpunktes.



Im 2. Schritt dreht man dann das Koordinatensystem um einen Winkel Φ (in der Mathematik wird ja Φ von der x-Achse aus im Gegenuhrzeigersinn gerechnet). Die Koordinaten (x'',y'') des Punktes P im gedrehten Koordinatensystem erhält man dann mit:



x = x cos ( Φ ) + y sin ( Φ )



y = x sin ( Φ ) + y cos ( Φ )



Jetzt muß man nur noch prüfen, ob | x | 1 und | y | 0 , 5 .

Viele Grüße

Yokozuna


Auto2
Frage beantwortet
Chris99

Chris99 aktiv_icon

12:12 Uhr, 13.09.2010

Antworten
Cool Danke! Eigentlich gar nicht kompliziert :-)



Werde es heute abend oder morgen programmieren. Mal sehen ob es klappt.





Vielen Dank auch für den obigen Link.