-2
我开始使用CGAL使用以下代码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代码示例将不胜感激。
感谢,
谢谢,我交换了我的(20,0)点的坐标,因此最近2个小时的混乱! – halberlinn 2014-10-21 21:41:42