【发布时间】:2014-10-21 21:03:13
【问题描述】:
我开始使用 CGAL 使用以下代码对一组点进行三角测量
#include <iostream>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Delaunay_triangulation_2.h>
#include <CGAL/Triangulation_vertex_base_with_info_2.h>
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Triangulation_vertex_base_2<K> Vb;
typedef CGAL::Triangulation_face_base_2<K> Fb;
typedef CGAL::Triangulation_data_structure_2<Vb,Fb> Tds;
typedef CGAL::Delaunay_triangulation_2<K,Tds> Triangulation;
typedef Triangulation::Point Point;
typedef Triangulation::Triangulation_data_structure tds;
using namespace std;
void main()
{
Triangulation t;
t.insert(Point(0,0));
t.insert(Point(0,20));
t.insert(Point(30,15));
t.insert(Point(30,-15));
Triangulation::Finite_faces_iterator fib = t.finite_faces_begin(), it;
Triangulation::Finite_faces_iterator fie = t.finite_faces_end();
Triangulation::Triangle tri;
std::cout << "Triangular faces"<<endl;
for (it=fib; it!=fie; ++it)
{
tri = t.triangle(it);
std::cout<<tri[0]<<" "<<tri[1]<<" "<<tri[2]<<" "<<endl;
}
char c;
std::cin>>c;
}
这会将面打印为 0,20 0,0 30,15 和 0,0 30,-15 30,15。我对这个输出不满意,因为第一个三角形完全在第二个三角形内。据我了解三角测量它应该返回 3 个三角形,而不仅仅是 2 个覆盖我的 4 个输入点的复杂外壳,并且不应该有重叠的三角形。有人可以解释我做错了什么吗?
我的最终目标是在最小角度约束下对凸多边形进行三角剖分(并通过在集合中添加额外的点)。任何 CGAL 代码示例都将不胜感激。
谢谢,
【问题讨论】:
标签: c++ triangulation cgal