【问题标题】:How to generate delaunay by some 3D coplanar vertices By CGAL如何通过一些 3D 共面顶点生成 delaunay By CGAL
【发布时间】:2018-02-24 06:50:59
【问题描述】:

我是使用 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相交的面?

【问题讨论】:

    标签: c++ cgal delaunay


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-16
      • 1970-01-01
      • 2015-12-16
      • 2021-08-11
      • 2012-03-29
      • 2014-12-23
      • 2013-11-19
      • 1970-01-01
      相关资源
      最近更新 更多