Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 08:51

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Cube-Cube Intersection
BeitragVerfasst: Fr Jan 14, 2005 18:48 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

irgendwie steh ich grad total auf dem schlauch... ich brauche eine funktion die mir sagt ob 2 Cubes intersecten..
Beide Cubes sind nicht gedreht = die seiten sind parralel.

An und für sich ja kein problem.. denn ich brauch rein theoretisch nur zu überprüfen ob ein eckpunkt von einem würfel innerhalb des anderen liegt.. nur gibt es da leider auch sonderfälle wie z.B. diesen hier:

Bild

Was mach ich da..?
Ich meine klar.. ich kann da jetzt ne ganze menge If-Abfagen machen.. nur da gibt es doch bestimmt was inteligenteres, oder? ;)

Au'revoir,
Aya~

PS: Man könnte natürlich auch einfach jede Ecke vom Würfel auf eine Ray-Plane Intersection überprüfen.. aber das ist irgendwie auchnich das wahre, oder??


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 14, 2005 19:30 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 13, 2004 11:00
Beiträge: 229
Wohnort: Steinhude
vll. für jede Richtung (x, y, z) einzeln prüfen, ob entweder ein Punkt "im Würfel" liegen würde (also nur von der jeweiligen Koordinate her), oder ob 2 Punkte auf entgegengesetzten Seiten einer der Flächen liegen (wieder nur vonner entsprechenden Koordinate her, müssen also pro Richtung aufgrund der parallelität nur jeweils 2 Punkte gegen eine Fläche geprüft werden).

Wenn das nicht für alle erfüllt ist, müssten sie sich nicht schneiden.

sry, wenn das jetzt etwas wirr ist, war grad am debuggen


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jan 14, 2005 19:35 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Mal dir das am besten mal in einer Dimension auf und erweitere es dann.
So geht's für AABB.
Code:
  1. function IntersectBBox(const bbox1, bbox2: TAABB): boolean;
  2. begin
  3.   result := not
  4.     ((bbox1.max.x < bbox2.min.x) or (bbox2.max.x < bbox1.min.x)
  5.     or (bbox1.max.y < bbox2.min.y) or (bbox2.max.y < bbox1.min.y)
  6.     or (bbox1.max.z < bbox2.min.z) or (bbox2.max.z < bbox1.min.z))
  7. end;


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 16 Queries | GZIP : On ]