![]() |
Kollision zweier gedrehter Rechtecke
Hi,
ich mache ein kleines Spiel und habe da 2 Autos (--> vereinfacht Rechtecke, von oben gesehen). Diese fahren jetzt so durch die Gegend und da Autos nicht immer nur parallel zueinander fahren sondern die auch lenken können werden sie auch irgendwann einmal zusammenstoßen... Und hier kommt mein Problem, ich möchte nämlich wissen wann die kollidieren... Ich kenne die jeweilige Größe der Rechtecke, ihren Mittelpunkt sowie den Winkel wie sie gedreht sind. Ich habe das Gefühl das sollte ich wissen, aber mir fällt es einfach nicht ein :oops: Skizze: ![]() Viele Grüße und vielen Dank schonmal Florian |
Re: Kollision zweier gedrehter Rechtecke
schau mal hier ist ein mathematischer ansatz
![]() gruß rené |
Re: Kollision zweier gedrehter Rechtecke
also mit farben ist das schlecht, braucht ja performance wie blöd und sauber isses auch nicht... abgesehen davon sind die rechedcke nicht einfarbig oder so...
|
Re: Kollision zweier gedrehter Rechtecke
hab noch nen link der hilfreich ist...
![]() |
Re: Kollision zweier gedrehter Rechtecke
Hm irgendwie versteh ich das nicht ganz... bin halt doch noch 10.-klässler :oops:
Es müsste auch nicht so genau sein hab ich mir überlegt, vielleicht berechne ich einfach annähernd große gerade Rechtecke und prüfe das dann da... Wie komme ich denn von nem Mittelpunkt mit der Gradangabe der Drehung zur Breite des Rechteckes , also die Strecke zw- 2 gegenüberliegende Ecken... OK ist ja ansich immer der SdP...hat sich erledigt... |
Re: Kollision zweier gedrehter Rechtecke
Zitat:
Zitat:
Code:
l ist die Länge und b die Breite des Autos.
a = l*cos(180°-beta) + b*cos(beta-90°)
= -l*cos(beta) + b*(cos(90°)*cos(beta)+sin(beta)*sin(90°)) = -l*cos(beta) + b*sin(beta) Zitat:
|
Re: Kollision zweier gedrehter Rechtecke
ich hab mir mal überlegt, es würde reichen, bei einem Rechteck mit allen 4 seiten zu prüfen ob es sich mit 2 gegenüberliegenden seiten des 2. rechteckes schneidet... sind dann 8 überprüfungen pro Durchlauf, sollte tragbar sein...
Nur wie prüfe ich ob sich 2 geraden schneiden :oops: wird ja immer schlimmer mit meinem nichtwissen. Die 10. habe ich gerade rum und das letzte thema war trigonometrie, war aber nur ganz kurz... |
Re: Kollision zweier gedrehter Rechtecke
Du musst nicht überprüfen, ob sich 2 Geraden schneiden, denn die schneiden sich immer in der Ebene, wenn sie nicht parallel zueinander sind.
Du musst überprüfen, ob sich 2 Strecken schneiden, das wird leider dann bisschen schwieriger. :gruebel: |
Re: Kollision zweier gedrehter Rechtecke
jep ok, war ein ausdrucksfehler... ein Rechteck hat ja keine geraden als seite...
|
Re: Kollision zweier gedrehter Rechtecke
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
Re: Kollision zweier gedrehter Rechtecke
machts euch doch nicht so schwer. sucht doch einfach bei google oder in einem spieleentwicklungsforum nach 2d kollisionsabfrage, da wird sich bestimmt was finden, was schon mehr auf die bedürfnisse eines programmierer optimiert ist, als diese mathematische theorie!
|
Re: Kollision zweier gedrehter Rechtecke
Ich gehe jetzt mal von Deinem Bild aus.
gegeben: Xa,Ya = Koordinaten der rechten oberen Ecke des Rechtecks Betha = Winkel H = Höhe des Rechtecks B = Breite des Rechtecks die Punkte des Rechtecks ergeben sich dann so: A (rechts oben) : Xa - war ja gegeben Ya B (rechts unten) : Xb = Ya - (cos(Betha -90°) * H) Yb = Ya - (sin(Betha -90°) * H) und so weiter und so fort :lol: (bin jetzt zu faul das fortzuführen) Schnapp dir mal dein Tafelwerk und guck mal unter Trigonemetrie, da müßte etwas in derart stehen: Gegenkathete/Ankathete = tan(Beta) ... TANGENS von Beta Ankathete/Hypothenuse = cos(Beta) ... COSINUS von Beta Gegenkathete/Hypothenuse = sin(Beta) ... SINUS von Beta Das hilft dir weiter... [OT]Falls du nicht weißt was eine Hypothenuse oder Kathete ist, so hilft dir Google sicherlich weiter. Obwohl man das eigentlich schon in der 8. Klasse haben sollte (war zumindest bei mir so).[/OT] |
DP-Maintenance
Dieses Thema wurde von "Luckie" von "Sonstige Fragen zu Delphi" nach "Multimedia" verschoben.
Und ich verschiebe das jetzt mal ins Multimedia-Forum. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz