Interpolieren eines Skalarfeldes in einem 3D-Raum

8

Ich habe einen 3D-Raum (x, y, z) mit einem zusätzlichen Parameter an jedem Punkt (Energie), der insgesamt 4 Dimensionen von Daten ergibt.

Ich würde gerne eine Menge von x-, y-, z-Punkten finden, die einer Iso-Energie-Oberfläche entsprechen, die durch Interpolation zwischen den bekannten Punkten gefunden wird.

Das räumliche Gitter hat einen konstanten Abstand und umgibt die iso-Energie-Oberfläche vollständig, nimmt jedoch keinen kubischen Raum ein (das Gitter besetzt einen ungefähr zylindrischen Raum)

Geschwindigkeit ist nicht entscheidend, ich kann diese Nummer für eine Weile knirschen lassen. Obwohl ich in Python und NumPy codiere, kann ich Teile des Codes in FORTRAN schreiben. Ich kann auch vorhandene C / C ++ / FORTRAN-Bibliotheken für die Verwendung in den Skripten umschließen, wenn solche Bibliotheken vorhanden sind.

Alle Beispiele und Algorithmen, die ich bisher online (und in Numerical Recipes) gefunden habe, haben keine 4D Daten mehr.

    
Brendan 28.12.2009, 23:46
quelle

3 Antworten

8

Hier gibt es einige Optionen ...

Um Ihre Energie in Ihr Mesh zu bekommen, müssen Sie eine Art von Interpolation verwenden. Die Methode von Shepard ist eine gängige und relativ einfache Methode zur Implementierung und funktioniert gut, wenn Ihre Datenverteilung vernünftig ist.

Sobald Sie das erledigt haben, müssen Sie eine Form der Isooberflächen-Generation erstellen.

Es gibt einige Bibliotheken da draußen, um das zu vereinfachen. Vor allem enthält VTK Python-Wrapper und verfügt über alle erforderlichen Tools für diese beiden Schritte.

Details dazu, wie dies in VTK gemacht werden kann, finden Sie vtkShepardMethod und vtkContourFilter .

    
Reed Copsey 28.12.2009 23:52
quelle
2

Da Sie ein räumliches Netz mit konstantem Abstand haben, können Sie alle Nachbarn auf gegenüberliegenden Seiten der Isofläche identifizieren. Wählen Sie eine Form der Interpolation (q.v. Reed Copseys Antwort) und führen Sie eine Wurzelfindung entlang der Linie zwischen jedem dieser Nachbarn durch.

    
comingstorm 29.12.2009 07:17
quelle
1

Warum nicht die quadlineare Interpolation ausprobieren?

erweitert die trilineare Interpolation um eine andere Dimension. Solange ein lineares Interpolationsmodell zu Ihren Daten passt, sollte es funktionieren.

    
Andrew 28.12.2009 23:54
quelle

Tags und Links