Konvexes Polytop und Separating Axis

Design Patterns, Erklärungen zu Algorithmen, Optimierung, Softwarearchitektur
Forumsregeln
Wenn das Problem mit einer Programmiersprache direkt zusammenhängt, bitte HIER posten.
Antworten
Benutzeravatar
B.G.Michi
Establishment
Beiträge: 163
Registriert: 07.03.2006, 20:38
Alter Benutzername: B.G.Michi
Kontaktdaten:

Konvexes Polytop und Separating Axis

Beitrag von B.G.Michi »

Guten Abend liebes Forum

Wie sollte es auch anderst sein wenn ich hier wieder mal ein neues Thema eröffne: ich stehe vor einem kleinen Problem und hoffe euer, wie sonst auch immer, außerst kompetenter Rat kann mir dabei helfen. :D
Es geht diesmal um meine Mathe-Bibliothek und zwar speziell um die Klasse für das konvexe Polytop (also Polygon, Polyeder, usw. in n Dimensionen) und um die Kollisionsberechnung zwischen zwei Polytopen. Die Idee ist wieder die Dimension als Templateparameter anzugeben, da die Algorithmen sich mit höheren Dimensionen ja nicht (oder kaum) ändern.

Meine erste Frage: Welche Membervariablen bekommt die Klasse, also wie speichere ich mir das Polytop am geschicktesten? Zur Auswahl stehen: (1) nur die Eckpunkte, (2) die Eckpunkte und Indizes für die Kanten, Flächen, usw. oder (3) nur die Achsen, die später für den Separating-Axis-Test benötigt werden, also die Senkrechten auf die Facets und die Projektion des Polytops auf diese Achse (= ein Interval). Bei der zweiten Möglichkeit stört mich, dass ich viele (= n) Listen pro Polytop speichere obwohl das Polytop eigentlich schon nur durch die Angabe der Eckpunkte definiert ist. Die erste und dritte Möglichkeit gefallen mir auch nicht so recht, da hier beim späteren Separating-Axis-Test z.B. in 3D erst die Kanten berechnet werden müssen. Die Klasse soll z.B. das View-Frustum der Kamera repräsentieren und für Clipping verwendet werden. Daher ist die Performance auch nicht ganz unwichtig. Was meint ihr, wie würdet ihr das handhaben?

Und die Nummer 2: Welche Achsen sind für den Separaing-Axis-Tes relevant? Im zweidimensionalen ist das relativ trivial: es werden die Senkrechten auf alle Kanten getestet. Im dreidimensionalen müssen zusätzlich alle Kreuzprodukte von zwei Kanten getestet werden. Und jetzt? Welche Achsen teste ich in n-D? Mein Vorstellungsvermögen reicht hier leider nicht mehr wirklich aus und im Internet finde ich nur Material zu 2D und 3D. (wenn das Problem hier zu schwierig wird ist das auch kein Beinbruch, 4D-Polytop-Kollision werde ich nur sehr selten brauchen *hust*. Allerdings hat die Verallgemeinerung auf n-D bisher sehr gut funktioniert und ich seh es auch irgendwie als Herausforderung...)

auf jeden Fall schon mal Vielen Dank fürs durchlesen
lg JFF_B.G.Michi
Benutzeravatar
dot
Establishment
Beiträge: 1734
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: Konvexes Polytop und Separating Axis

Beitrag von dot »

Antworten