AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Überprüfung, ob sich Rechtecke schneiden
Thema durchsuchen
Ansicht
Themen-Optionen

Überprüfung, ob sich Rechtecke schneiden

Ein Thema von Nikolas · begonnen am 27. Jun 2007 · letzter Beitrag vom 1. Jul 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#1

Überprüfung, ob sich Rechtecke schneiden

  Alt 27. Jun 2007, 16:35
Hallo

Ich bin gerade auf der Suche nach einer schnellen Lösung für folgendes Problem:

Ich habe ein ruhendes Rechteck, dessen Kanten parallel zu den Achsen liegen. Ein anderes Rechteck liegt irgendwie gedreht im Raum. Die Frage ist jetzt, ob sie sich beühren.

Eine Möglichkeit wäre natürlich alle Kanten des einen mit allen Kanten des anderen zu schneiden und auf schnittpunkt im richtigen Bereich zu testen. Nur ist das etwas aufwändig. Später soll das ganze in einem Spiel laufen, von da her Suche ich besonders nach einer perfomanten Lösung. Weiss da jemand etwas schnelleres?

Nikolas
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#2

Re: Überprüfung, ob sich Rechtecke schneiden

  Alt 27. Jun 2007, 16:47
Game mit OpenGL bzw. DirectX? Wenn ja dann sollte es da passende Funktionen geben. Vierecke sind zwei aneinanderliegende Dreiecke. Dafuer gibt es bestimmt Schnitttestfunktionen.
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Überprüfung, ob sich Rechtecke schneiden

  Alt 27. Jun 2007, 16:51
Nein, Game mit C++

Alles reine Handarbeit
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Überprüfung, ob sich Rechtecke schneiden

  Alt 27. Jun 2007, 17:05
Hallo,

projiziere die Rechtecke zuerst auf eine 2-dimensionale ebene (z.B. indem du sie "von oben" ansiehst, du kannst dann einfach die z-koords untern tisch fallen lassen).

Benutze dann MSDN-Library durchsuchenIntersectRect. Wenn du damit keine Kollision erkennst, gibts auch keine. Wenn doch, musst du das ganze nochmal 3-dimensional prüfen, bzw. prüfen, ob es in einer der anderen ebenen (yz und xz) auch kollisionen gibt (bei einem rechteck mit höhe = 1 bzw. 0 kannst du dann davon ausgehen, dass eine kollision genau dann stattfindet, wenn du in allen drei ebenen eine erkennst, glaube ich... )
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: Überprüfung, ob sich Rechtecke schneiden

  Alt 27. Jun 2007, 17:57
Zitat von DGL-luke:
Benutze dann MSDN-Library durchsuchenIntersectRect.
Hier werden aber Rechtecke erwartet, die rechtwinklig zum Koordinatensystem liegen. Zumindest ein Rechteck tut dies nicht.

@Nikolas oder Admin: bitte Thema ändern nach: Überprüfung, ob Quader sich schneiden.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Überprüfung, ob sich Rechtecke schneiden

  Alt 27. Jun 2007, 18:06
...trotzdem funktioniert mein ansatz. und ich denke, Nikolas spricht von Rechtecken.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

Re: Überprüfung, ob sich Rechtecke schneiden

  Alt 27. Jun 2007, 18:11
Zitat von DGL-luke:
und ich denke, Nikolas spricht von Rechtecken.
> Ein anderes Rechteck liegt irgendwie gedreht im Raum
"Gedreht im Raum" deutet für mich auf 3 Dimensionen hin. Er soll sich halt erklären, ob es 2 oder 3 Dimensionen sind.
Andreas
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#8

Re: Überprüfung, ob sich Rechtecke schneiden

  Alt 27. Jun 2007, 18:27
Zitat:
Später soll das ganze in einem Spiel laufen, von da her Suche ich besonders nach einer perfomanten Lösung.
Wenn es um Performance geht, kannst du auch einfach 99% aller Fälle abfangen, indem du zunächst prüfst, ob sich die Bounding Boxes (die parallel zu den Achsen ausgerichtet sind) überschneiden, und nur in dem Fall eine genaue Prüfung vornimmst (alternativ auch Bounding Circles, das könnte bei gedrehten Rechtecken sogar besser sein). Denk daran, dass es bei dem Gedanken der Performance-Optimierung nicht unbedingt immer darum geht, einen zeitaufwändigen Vorgang etwas schneller zu machen, sondern häufiger, ihn von vornherein zu vermeiden.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Überprüfung, ob sich Rechtecke schneiden

  Alt 27. Jun 2007, 18:38
auch ein rechteck kann im raum liegen, auch "gedreht"...
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#10

Re: Überprüfung, ob sich Rechtecke schneiden

  Alt 28. Jun 2007, 09:51
Es geht um den 2-Dimensionalen Raum, in dem sich mein Spiel bewegt. Entschuldigt bitte die Ungenauigkeit. (Wobei: Wer hat schon mal in einem Spiel Rechtecke in einem 3D-Raum gesehen, die geschnitten werden müssen? Klingt etwas nach Autoscooter mit fliegenden Teppichen )

Das mit dem Boundingcircle hört sich gut an. Als Vorprüfung werde ich das einführen. Eine schnelle Lösung dahinter wär aber auch gut
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:39 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