2017-08-02 3 views
1

gehört Ich habe ein Tetraedergitter einer 3D-Region. Das Netz wird durch zwei Dateien mit den Erweiterungen .node und .ele definiert, die Daten enthalten, die sich auf Knoten und Elemente beziehen (dies ist das Format der Ausgabedateien von tetgen, dem 3d-Delaunay-Tetraeder-Programm). Die .node-Datei enthält in jeder Zeile die Knotennummer und die X-, Y- und Z-Koordinaten dieses Knotens. Die .ele-Datei enthält die Elementnummer und Knotennummern, die ihren vier Eckpunkten entsprechen. Was ist nun der einfachste Algorithmus, um zu entscheiden, zu welchem ​​Element dieser Punkt gehört (x1, y1, z1)?Finden Sie, welches Tetraederelement ein Punkt zu

+0

Vielleicht das begrenzende AABB jedes Tetraeders berechnen, und Einfügen in ein BVH * * (Volumenhierarchie Bounding) -> O (log N) * Breit Phase * search. Dann schneidet es für jeden AABB, ob es sich innerhalb des entsprechenden Tetraeders befindet – meowgoesthedog

Antwort

1

Wenn Sie die Ausrichtung der Flächen Ihrer Tetraeder kennen, müssen Sie nur das Volumen der Tetraeder berechnen, die durch Ihren Punkt p = (x1, y1, z1) und jede Fläche der Tetraeder gebildet werden. Der Punkt p befindet sich genau dann innerhalb eines Tetraeders, wenn er für jede Fläche ein positives Volumen ergibt.


CGinC
Snippet von Computational Geometry in C.


Verwandte Themen