Biorąc pod uwagę wartości na siatce, jakiego algorytmu mogę użyć do efektywnego konstruowania wyrównanych konturów?

9

Mam siatkę, twarze F, krawędzie Ei wierzchołki V, i mam listę wstępnie zdefiniowanych konturów ustawionych poziomów.

Jakiego algorytmu mogę użyć do najskuteczniejszego tworzenia konturów?

wprowadź opis zdjęcia tutaj

Wykres konturu pokazano powyżej. Linie tego samego koloru mają to samoz wartość.

Grawiton
źródło
1
Dlaczego głosowanie negatywne?
Graviton,
1
nie jestem pewien, wydaje mi się to istotnym pytaniem. Downvoter? Jednym z problemów jest to, że izoliny nie wydają się szczególnie dobrze zdefiniowane dla danych siatki. Czy mógłbyś podać graficzny przykład problemu, który próbujesz rozwiązać?
Aron Ahmadia

Odpowiedzi:

4

Można to zrobić za pomocą pętli nad każdym elementem, a następnie dla każdego elementu pętli nad krawędziami. Następnie dla każdej krawędzi określ współrzędną dla danego konturu, jeśli przecina on krawędź, tj. Sprawdź, czy kontur przyjmuje wartość w przedziale między wartościami wierzchołków. Jeśli kontur przecina dwie krawędzie, narysuj linię między współrzędnymi między wykrytymi punktami przecięcia na krawędziach.

Wykonanie tego dla wszystkich elementów utworzy kontury. Opcją jest również udoskonalenie drobniejszej siatki przez interpolację każdego trójkąta, a następnie użycie delangijskich triangulacji rafinowanej siatki, a następnie zastosowanie procedury opisanej powyżej w celu uzyskania wystarczająco wysokiej rozdzielczości.

Allan P. Engsig-Karup
źródło
Środowisko wykonawcze do tego jest O(Fn), gdzie F to numer twarzy i njest liczbą konturów, czy można poprawić środowisko uruchomieniowe tego algorytmu?
Graviton,
@Graviton: Nie sądzę, że można oczekiwać znacznie lepszego niż skalowanie liniowe z rozmiarem problemu ...
Allan P. Engsig-Karup