Bibliotecas de software de mosaico N-dimensional Delaunay


10

Eu tenho um conjunto de pontos / nós conhecidos espaçados irregularmente no espaço N-Dimensional (N> = 2) e gostaria de uma maneira de gerar a triangulação Delaunay desses pontos e retornar os elementos correspondentes.

Existe alguma biblioteca de malhas existente que faça uma triangulação do ND Delaunay?

(Estou fazendo isso porque quero usar os elementos de malha como base para interpolação linear em qualquer ponto do espaço. Minha dimensão é atualmente tratada por uma classe C ++ modelada sobre dimensão, se isso faz alguma diferença nas sugestões ...)


Oi mirams, e bem-vindo ao scicomp! Você pode estar interessado nesta pergunta: scicomp.stackexchange.com/questions/770/…
Paul

Obrigado pelo link, eu esperava evitar escrever minha própria mensagem. O Tetgen (para 3D) é executado em várias linhas de código. Parece um problema que deve ter sido resolvido várias vezes.
Mirams


A triangulação de Delaunay é tipicamente derivada do casco convexo no espaço dimensional mais alto. Veja a observação qhull abaixo.
precisa saber é o seguinte

3D não é tão difícil, mas para 4D é extremamente difícil quando refino, eu fiz uma pergunta sobre MathOverflow, mas ainda sem resposta: mathoverflow.net/questions/130878/...
Shuhao Cao

Respostas:


4

Eu acho que você pode fazer isso usando o software de casco convexo (por exemplo, QHull) através do algoritmo de elevação. Pelo menos, a documentação do comando "delaunayn" do matlab parece indicar isso.


2
Testei 4D, e isso parece funcionar bem no QHull (eu o uso via scipy.spatial em python).
precisa

11
Você não vai vencer o qhull. Eu usei no Scipy também em até 6 dimensões.
meawoppl

Hmmm - isso é qhull.org/news/qhull-news.html não é o ideal: "Todos os usuários Nas versões 3 e superior, a opção 'Qt' não produz triangulações conformes para facetas adjacentes e não simples. Por exemplo, se você tem uma matriz 3-d regular de sites de entrada, a triangulação Delaunay consiste em cubos. A opção 'Qt' triangulará cada cubo em tetraedro. Dentro de cada cubo, a triangulação é consistente, mas não necessariamente consistente entre os cubos adjacentes [C. Bertoglio; C. de Visser]. Como corrigir esse problema é desconhecido. " Vale a pena tentar, porém, vou ver como vou.
Mirams


0

Eu também encontrei Distmesh no Matlab que parece ser capaz de fazer isso:

Página inicial do Distmesh

Ele faz mosaicos para malhas de elementos finitos (via QHull), mas com uma interface agradável para definir áreas / superfícies com base nas funções de distância. Melhor para os casos em que você deseja definir uma superfície matematicamente e não se importa onde estão os nós internos.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.