如果有任何C++库可以用于将非流形几何转换成流形曲面?
是的,有
CGAL
,的
几何测量
算法
L
图书馆。
在CGAL中
polygon mesh
被认为具有2流形的拓扑。
当多边形网格的面给定但连通性未知时,这组面称为
polygon soup
. 也就是说,曲面的所有三角形都将分别处理。
要将非流形曲面转换为流形,可以
第一
将数据加载到
多边形汤
.
那么
将其转换为
多边形网格
使用函数
polygon_soup_to_polygon_mesh
. 以下
code snippet
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);
或者可以尝试修复曲面网格,如中所示
here
.