Ich habe einen schlechten Code ausgearbeitet, um das Ziel der 3D-Delauney-Triangulation zu erreichen (zufällige Punkte in E3), aber der Zeitaufwand ist enorm, und wenn fünf Punkte genau (oder fast aufgrund des Rundungsfehlers) auf einer Kugel liegen, Mein Code kann mit dieser Situation nicht richtig umgehen.
Ich benutze die grundlegende Datenstruktur, die eine Liste von Tetraedern und eine Liste von Punkten und eine Liste der Beziehung von Tetraedern zu ihrer Nachbarschaft ist. Der Algorithmus ist inkrementelles Einfügen.
Kann mir jemand sagen, welche Arten von Datenstrukturen und Algorithmen ich bevorzugen sollte? Kann eine Quad-Edge-Datenstruktur in der Situation verwendet werden? Wenn ich Artikel zu diesem Thema lese, stelle ich fest, dass diese Datenstruktur möglicherweise nicht für 3D-Anwendungen geeignet ist (genau genommen nicht für 3D-Verteileranwendungen geeignet? Ich weiß nur, was gestern vielfältig ist. Bitte helfen Sie mir ...). Ist Divide-Conquer ein besserer Algorithmus? Vielen Dank!
Antworten:
Dies ist in qhull implementiert, das von scipy (Python) erhältlich ist. Wenn Sie diese Implementierungen aus irgendeinem Grund nicht direkt verwenden können, können die Erläuterungen zu den Datenstrukturen in den Dokumenten hilfreich sein.
http://www.qhull.org/
http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.Delaunay.html#scipy.spatial.Delaunay
quelle
Die Datenstruktur in 3D ist rein algebraisch.
Was Sie brauchen, sind die folgenden Arrays:
Vertex
V
Element to Vertex
E2V
V
Face to Vertex
F2V
V
Edge to Vertex
F2V
V
Die ersten beiden sind notwendige Datenstrukturen , alle anderen Arrays können mit algebraischen Operationen aus den ersten beiden generiert werden. Andere bemerkenswerte Arrays sind
Element to Edge
,Face to Edge
,Vertex to Element
(die Elemente eine Vertex - Sharing),Face to Element
(die Elemente ein Gesicht - Sharing),Edge to Face
(die Flächen eine Kante teilen) usw.Die Implementierung der 3D-Delaunay-Triangulation klingt nicht so trivial wie die andere Antwort. Abhängig von Ihrer interessierenden Software kann ich meine Antwort mehr aktualisieren.
quelle