Existe um algoritmo computacionalmente razoável para gerar um conjunto de polígonos a partir de um conjunto de 2d pontos?

7

Existe um algoritmo conhecido / existente para pegar uma tela 2D coberta em pontos distribuídos arbitrariamente / aleatoriamente e dividi-la inteiramente em um conjunto de polígonos não sobrepostos? Um exemplo do tipo de resultado que estou procurando:insira a descrição da imagem aqui

CaptainRad
fonte
11
É importante que o algoritmo comece com o conjunto de pontos ou está bom se conseguir o efeito de alguma outra maneira? (Não sei a resposta em nenhum dos casos, mas não há razão para limitar a resposta se o conjunto de pontos gerado aleatoriamente for apenas o começo de uma solução e não uma parte intrínseca do problema.)
David Richerby
2
Você não diz qual ponto geraria o diagrama acima. A resposta "Voronoi" da DW é ótima, a menos que você queira dizer que os vértices compartilhados foram os pontos definidos inicialmente.
Vynce

Respostas:

12

Você pode estar procurando um diagrama de Voronoi . Dado um conjuntoS de pontos, ele cria uma célula por ponto, onde a célula para o ponto p contém tudo o que está mais perto p do que em qualquer outro ponto S. Existem algoritmos para calcular um diagrama de Voronoi noO(nlgn) hora, onde n é o número de pontos no seu conjunto.

DW
fonte
13

Sim, existem até algoritmos capazes de satisfazer restrições adicionais. Pode ocorrer como uma subtarefa durante a geração da malha . O algoritmo de baunilha é a triangulação de Delaunay , que está intimamente relacionada ao diagrama de Voronoi (no caso de você se perguntar por que a DW acha que o diagrama de Voronoi responde à sua pergunta).

Thomas Klimpel
fonte