Leve Delaunay biblioteca triangulação (para c ++) [fechado]
-
22-07-2019 - |
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?
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 .