gpt4 book ai didi

c++ - CGAL 二维德劳内三角剖分 : How to get edges as vertex id pairs

转载 作者:可可西里 更新时间:2023-11-01 18:27:32 26 4
gpt4 key购买 nike

我有一组二维点,每个点都有一个关联的 ID。 (例如,如果点存储在数组中,则 id 是每个点 0,....,n-1 的索引)。

现在我创建了这些点的 Delaunay 三角剖分,并想列出所有有限边。对于每条边,我想用相应的 2 个顶点表示点的 ID。示例:如果点 0 和点 2 之间存在一条边,则 (0,2)。这可能吗?

#include <vector>
#include <CGAL\Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL\Delaunay_triangulation_2.h>

typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Delaunay_triangulation_2<K> Delaunay;
typedef K::Point_2 Point;

void load_points(std::vector<Point>& rPoints)
{
rPoints.push_back(Point(10,10)); // first point
rPoints.push_back(Point(60,10)); // second point
rPoints.push_back(Point(30,40)); // third point
rPoints.push_back(Point(40,80)); // fourth point
}

void main()
{
std::vector<Point> points;
load_points(points);

Delaunay dt;
dt.insert(points.begin(),points.end());

for(Delaunay::Finite_edges_iterator it = dt.finite_edges_begin(); it != dt.finite_edges_end(); ++it)
{
}
}

最佳答案

首先,您需要使用带信息的顶点类型,如 these examples .那么一条边是一对包含面的句柄以及面中与边相对的顶点的索引。

如果你有:

Delaunay::Edge e=*it;

您正在寻找的指数是:

int i1= e.first->vertex( (e.second+1)%3 )->info();
int i2= e.first->vertex( (e.second+2)%3 )->info();

关于c++ - CGAL 二维德劳内三角剖分 : How to get edges as vertex id pairs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9683809/

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