如何通过CGAL通过一些3D共面顶点生成Delaunay



我是使用CGAL库开发的新手,我尝试了以下代码以生成Delaunay,以2D。

#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类用于此目的。它将Coplanar指数作为维度2的特殊情况2。

另一个选择是通过将您的点投射到其所属的飞机上,使用Delaunay_triangulation_2。这将处理几乎是共面的点。

相关内容

  • 没有找到相关文章

最新更新