多面体的三角剖分失败

时间:2019-03-12 11:55:10

标签: c++ cgal triangulation polyhedra

我正在尝试使用CGAL 4.13和以下代码片段对多面体的面进行三角剖分,该片段在stdin上采用OFF格式的多面体定义文件:

#include <CGAL/Polyhedron_3.h>
#include <CGAL/IO/Polyhedron_iostream.h>
#include <CGAL/Exact_predicates_exact_constructions_kernel.h>
#include <CGAL/Polygon_mesh_processing/triangulate_faces.h>

typedef CGAL::Exact_predicates_exact_constructions_kernel Kernel;
typedef CGAL::Polyhedron_3<Kernel> Polyhedron;
using namespace std;

int main (void) {
    Polyhedron p;
    cin >> p;
    if (!CGAL::Polygon_mesh_processing::triangulate_faces(p)) 
        cerr << p << endl << "Triangulation failed!" << endl;
}

但是,我看到以下警告:

  

CGAL警告:检查违规!表达式:假文件:   /usr/include/CGAL/Constrained_triangulation_2.h行:902   说明:您使用的是精确数字类型,   Constrained_triangulation_plus_2类将避免级联   相交计算,效率更高该消息是   仅在未定义CGAL_NO_CDT_2_WARNING时显示。

     

请参阅错误报告说明,网址为   https://www.cgal.org/bug_report.html

,并且三角剖分失败。消息Triangulation failed!和多面体定义已打印,该定义清楚地显示了一些具有5个甚至7个顶点的面。

不幸的是,多面体的OFF表示长度为8070行,我无法创建一个较小的示例来重现该问题。所以我上传了here。它在那里只能使用30天,如果有人可以建议一个更好的地方上传它,我会考虑的。

编译后,例如使用

  

g ++ -O3 tri.cpp -o tri -lCGAL -lgmp -lmpfr -Wall

问题可以用

重现
  

./ tri

我不确定三角剖分的失败是否与警告有关;如何将Constrained_triangulation_plus_2类与CGAL::Polygon_mesh_processing::triangulate_faces()一起使用?这有可能吗?三角剖分并不是一件复杂的事情,首先如何使它失败?

0 个答案:

没有答案