有没有什么C++库(Linux版)可以修复非歧面网格,并将其转换为歧面几何体?

问题描述 投票:-2回答:1

我有一个算法的分割结果,但是,生成的三角形曲面不是歧面几何。我在这里问这个问题,有没有什么C++库可以用来将非manifold几何体转换为manifold曲面?

PS,我已经对结果进行了清理,填充了孔洞,但是好像还有一些非光滑的部分和孔洞。

谢邀

mesh cgal surface geometry-surface libigl
1个回答
0
投票

如果有什么C++库可以用来将非歧面几何体转换为歧面曲面?

有,有的 CGALజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజ C实践 G计量学 A算法 L图书馆。

在CGAL中,一个 多边形网格 被认为具有2-manifold的拓扑结构。而当多边形网格的面给定,但连通性未知时,这组面称为 多边形汤. 也就是说,您的曲面的所有三角形将被单独处理。

要将一个非歧面转化为歧面,您可以 第一 将您的数据加载到 多边形汤. 那么 化为 多边形网格 使用函数 polygon_soup_to_polygon_mesh. 以下是 代码段 CGAL中给出了一个例子。

typedef CGAL::Exact_predicates_inexact_constructions_kernel          K;
typedef CGAL::Polyhedron_3<K, CGAL::Polyhedron_items_with_id_3>      Polyhedron;

std::ifstream input(filename);
std::vector<K::Point_3> points;
std::vector<std::vector<std::size_t> > polygons;
if(!input || !CGAL::read_OFF(input, points, polygons) || points.empty())
{
  std::cerr << "Cannot open file " << std::endl;
  return EXIT_FAILURE;
}
CGAL::Polygon_mesh_processing::orient_polygon_soup(points, polygons);
Polyhedron mesh;
CGAL::Polygon_mesh_processing::polygon_soup_to_polygon_mesh(points, polygons, mesh);

或者你可以尝试修复表面网格,如图所示。此处.

© www.soinside.com 2019 - 2024. All rights reserved.