Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Kollision zweier gedrehter Rechtecke (https://www.delphipraxis.net/26847-kollision-zweier-gedrehter-rechtecke.html)

Florian H 30. Jul 2004 09:43


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: http://www.ystart.net/upload/20040730/1091176926.jpg


Viele Grüße und vielen Dank schonmal
Florian

ibp 30. Jul 2004 10:16

Re: Kollision zweier gedrehter Rechtecke
 
schau mal hier ist ein mathematischer ansatz Koordinatentransformation, ansonsten kann man das nicht mit farben und den bildpunkten erledigen ?

gruß rené

Florian H 30. Jul 2004 10:17

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...

ibp 30. Jul 2004 10:20

Re: Kollision zweier gedrehter Rechtecke
 
hab noch nen link der hilfreich ist...Koordinatentransformation

Florian H 31. Jul 2004 11:19

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...

d3g 31. Jul 2004 12:48

Re: Kollision zweier gedrehter Rechtecke
 
Zitat:

Zitat von Florian H
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...

Keine so gute Idee, aber wie du meinst...

Zitat:

Zitat von Florian H
Wie komme ich denn von nem Mittelpunkt mit der Gradangabe der Drehung zur Breite des Rechteckes , also die Strecke zw- 2 gegenüberliegende Ecken...

Trigonometrie. Ich nehme an, du kommst jetzt in die 10., sonst hättest du das das letzte Halbjahr ziemlich lange machen sollen und hättest die Frage nicht gestellt. Am Beispiel des blauen Autos:
Code:
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)
l ist die Länge und b die Breite des Autos.

Zitat:

Zitat von Florian H
OK ist ja ansich immer der SdP...

Wie stellst du das denn an? Das funktioniert nur bei beta = 135°...

Florian H 31. Jul 2004 15:17

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...

Matze 31. Jul 2004 15:45

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:

Florian H 31. Jul 2004 15:52

Re: Kollision zweier gedrehter Rechtecke
 
jep ok, war ein ausdrucksfehler... ein Rechteck hat ja keine geraden als seite...

d3g 2. Aug 2004 11:21

Re: Kollision zweier gedrehter Rechtecke
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Florian H
Nur wie prüfe ich ob sich 2 geraden schneiden :oops: wird ja immer schlimmer mit meinem nichtwissen.

Also Strecken... Nimm die Geraden, auf denen sie liegen, in Parameterform, das macht's einfacher. Siehe Anhang.

nailor 2. Aug 2004 12:32

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!

Spezi1980 2. Aug 2004 15:41

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 2. Aug 2004 16:17

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 07:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz