gpt4 book ai didi

c++ - 如何通过 CGAL 的一些 3D 共面顶点生成 delaunay

转载 作者:行者123 更新时间:2023-11-30 05:09:22 26 4
gpt4 key购买 nike

我是使用 cgal 库进行开发的新手,我已尝试使用以下代码在 2D 中生成 delaunay。

#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Constrained_Delaunay_triangulation_2.h>
#include <CGAL/Delaunay_triangulation_2.h>

#include <cassert>
#include <iostream>

typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Delaunay_triangulation_2<K> Triangulation;
typedef Triangulation::Point Point;


int main()
{
std::vector<Point> PL;
PL.push_back(Point(0, 0));
PL.push_back(Point(1, 0));
PL.push_back(Point(1, 1));
PL.push_back(Point(0, 1));
auto a = PL.begin();

Triangulation T;
T.insert(PL.begin(),PL.end());
Triangulation::Finite_faces_iterator Finite_face_iterator;

for (Finite_face_iterator = T.finite_faces_begin(); Finite_face_iterator != T.finite_faces_end(); ++Finite_face_iterator)
{
std::cerr << T.triangle(Finite_face_iterator) << std::endl;
}

return 0;
}

那些代码输出两个面,如果顶点变成 3D 像点(0,0,0),点(1,0,0),点(1,1,0),点(0,1,0)这四个顶点在同一平面上,如何输出两个不与 CGAL 相交的面?

最佳答案

为此,您可以使用 Delaunay_triangulation_3 类。它将共面点作为维度 2 的特例来处理。那么,所有点都必须完全共面。

另一种选择是使用 Delaunay_triangulation_2,方法是将您的点投影到它们所属的平面上。这将处理几乎共面的点。

关于c++ - 如何通过 CGAL 的一些 3D 共面顶点生成 delaunay,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46233461/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com