C++ 带投影的约束delaunay三角剖分

C++ 带投影的约束delaunay三角剖分,c++,cgal,C++,Cgal,如何对三维数据使用约束的\u Delaunay\u三角剖分\u 2?之后我需要显示一个网格 从文档中可以看出,Projection\u traits\u xy\u 3是constratedtriangulationtraits\u 2的一个模型。如何正确键入CDT typedef CGAL::Exact_predicates_inexact_constructions_kernel K; typedef CGAL::Projection_traits_xy_3<K> Gt; typ

如何对三维数据使用
约束的\u Delaunay\u三角剖分\u 2
?之后我需要显示一个网格

从文档中可以看出,
Projection\u traits\u xy\u 3
constratedtriangulationtraits\u 2
的一个模型。如何正确键入CDT

typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Projection_traits_xy_3<K>  Gt;
typedef K::Point_3   Point;

typedef CGAL::Triangulation_vertex_base_2<K> Vb;
typedef CGAL::Delaunay_mesh_face_base_2<K> Fb;
typedef CGAL::Triangulation_data_structure_2<Vb, Fb> Tds;

typedef CGAL::Constrained_Delaunay_triangulation_2<K, Tds> CDT;
//-or-
typedef CGAL::Constrained_Delaunay_triangulation_2<Gt, K, Tds> CDT;
//-or what?-

typedef CGAL::Delaunay_mesh_size_criteria_2<CDT> Criteria;
typedef CGAL::Delaunay_mesher_2<CDT, Criteria> Mesher;

typedef CDT::Vertex_handle Vertex_handle;
//what should Point be?
//typedef CDT::Point Point;

int main(int argc, char *argv[])
{


    const char* fname = (argc>1)?argv[1]:"../sampledata/dtm_ground.xyz";

    std::vector<Point> points;
    std::ifstream stream(fname);
    if (!stream || !CGAL::read_xyz_points(stream,
                         std::back_inserter(points),
                         CGAL::Identity_property_map<Point>()))
    {
        std::cerr << "Error: cannot read file " << fname << std::endl;
        return EXIT_FAILURE;
    }

    CDT cdt(points.begin(), points.end());

    //CGAL::refine_Delaunay_mesh_2(cdt, Criteria(0.125, 0.5));
    //std::cout << "Number of vertices: " << cdt.number_of_vertices() << std::endl;

    return EXIT_SUCCESS;
}
typedef CGAL::精确谓词\不精确构造\内核K;
typedef CGAL::Projection_traits_xy_3 Gt;
类型定义K::点_3点;
typedef CGAL::三角剖分_顶点_底面_2 Vb;
typedef CGAL::Delaunay_网格_面_底_2 Fb;
typedef CGAL::三角测量数据结构Tds;
typedef CGAL::约束的Delaunay三角剖分CDT;
//-或-
typedef CGAL::约束的Delaunay三角剖分CDT;
//-还是什么-
typedef CGAL::Delaunay_网格尺寸_标准_2标准;
类型定义CGAL::Delaunay_mesher_2 mesher;
typedef CDT::顶点句柄顶点句柄;
//重点应该是什么?
//typedef-CDT::Point-Point;
int main(int argc,char*argv[])
{
常量char*fname=(argc>1)?argv[1]:“./sampledata/dtm_ground.xyz”;
std::向量点;
std::ifstream(fname);
如果(!stream | |!CGAL::read_xyz_点(stream,
标准:背面插入器(点),
CGAL::Identity_property_map())
{

std::cerr所有三角剖分类的特征类参数必须为
Gt

受约束三角剖分的按范围插入构造函数需要一个范围的约束。您可以改用插入函数。

在所有与三角剖分相关的事情中用Gt替换K。如何使用迭代器构建CDT?
CDT(points.begin(),points.end())
CDT.insert(Point(p))
其中
p
是一个
点3
可以工作,但不能与迭代器一起工作,迭代器需要一对
aparentlytry
cdt.insert(points.begin(),points.end());
@slorio锁定它。把你的评论作为答案,我会给你的!