Pergunta

Eu gostaria de brincar com algumas triangulações (2D) Delaunay, e estou procurando uma razoavelmente pequena biblioteca para trabalhar. Estou ciente da CGAL, mas eu queria saber se havia algo bastante simples e fora direto lá.

Coisas que eu gostaria de fazer:

  • criar uma triangulação de um conjunto arbitrário de pontos
  • encontrar triângulo um ponto arbitrário é, e buscar o vértices
  • criar uma imagem da triangulação (opcional)

Sugestões?

Foi útil?

Solução

Você provavelmente deve detalhar suas metas um pouco, de modo que as respostas mais relevantes podem ser fornecidas, mas deixe-me primeira menção Triângulo , uma ferramenta de geração 2D Delaunay, que é escrito em C, e pode ser usado tanto como um programa autônomo, ou chamado de seu próprio código.

Então, sobre CGAL, aqui é um típico pequeno exemplo, no caso de você ainda considerá-lo:

#include <vector>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Delaunay_triangulation_2.h>

typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Delaunay_triangulation_2<K>                   Delaunay;    
typedef K::Point_2                                          Point;

void load_points(std::vector< Point >& points)
{
  points.push_back(Point(1., 1.));
  points.push_back(Point(2., 1.));
  points.push_back(Point(2., 2.));
  points.push_back(Point(1., 2.));      
}

int main()
{
  std::vector< Point > points;
  load_points(points);
  Delaunay dt;
  dt.insert(points.begin(), points.end());
  std::cout << dt.number_of_vertices() << std::endl;
  return 0;
}

Outras dicas

Veja também poly2tri, parece bom: https://github.com/greenm01/poly2tri

Eu usei o Gnu Triangulated biblioteca de superfície para 2D Delaunay triangulação e funcionou bem. Ligeiramente estranho chamar porque ele usa esse estilo GLib OOP-em-C, mas pode ser facilmente embrulhado .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top