使用CGAL的Voronoi图:仅提取边缘点(凸壳)
Voronoi Diagram using CGAL: extract only edge points (convex hull)
我想使用voronoi图提取边缘点(点位于凸赫尔边界的边缘)。我知道一个无界的单元格包含边界站点点,但是如何使用迭代器访问该信息?
解决方案
VD vd;
//initialise your voronoi diagram
VD::Face_iterator it = vd.faces_begin(), beyond = vd.faces_end();
for (int f = 0; it != beyond; ++f, ++it)
{
std::cout << "Face " << f << ": n";
if (it->is_unbounded())
{
// it's a boundary point
}
}
阅读CGAL 2D DELAUNAY三角剖分:如何将边缘作为顶点ID对,并牢记Voronoi和Delaunay之间的关系检查此示例:
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Delaunay_triangulation_2.h>
#include <fstream>
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Delaunay_triangulation_2<K> Triangulation;
typedef Triangulation::Edge_iterator Edge_iterator;
typedef Triangulation::Point Point;
int main( )
{
std::ifstream in("data/voronoi.cin");
std::istream_iterator<Point> begin(in);
std::istream_iterator<Point> end;
Triangulation T;
T.insert(begin, end);
int ns = 0;
int nr = 0;
Edge_iterator eit =T.edges_begin();
for ( ; eit !=T.edges_end(); ++eit) {
CGAL::Object o = T.dual(eit);
if (CGAL::object_cast<K::Segment_2>(&o)) {++ns;}
else if (CGAL::object_cast<K::Ray_2>(&o)) {++nr;}
}
std::cout << "The Voronoi diagram has " << ns << " finite edges "
<< " and " << nr << " rays" << std::endl;
return 0;
}
如果这没有回答您的问题,请受到它的启发并玩耍。
相关文章:
- 如何获取边缘窗口句柄 (HWND)?
- 提升如何在图形可视化中写入边缘的权重?
- 在 c++ 中使用 Tensorflow Lite 在边缘 TPU 上运行"mobilenet_ssd_v2_coco_quant_postprocess_edgetpu.tflite"时出现问题
- 分数背包边缘箱
- 应用程序无法找到铬边缘浏览器
- SFML C++ Canny边缘检测双刃
- 难以使球从屏幕边缘反弹
- 我的精灵使用名为 ASGE 的C++框架卡在屏幕边缘
- 无法在 vtk 中重新着色边缘
- 如何使用提升make_label_writer写入边缘属性?
- 使用 epoll 边缘触发器的套接字上的数据过多
- 迭代提升反向图中的边缘
- 凸壳算法-Graham扫描最快比较函数
- 使用CGAL的Voronoi图:仅提取边缘点(凸壳)
- 卷组数算法和凸边界/边缘上的点
- OpenCV 中凸壳函数的输出向量是什么?
- 通过使用两个凸壳的切线来合并它们的算法在实践中是如何工作的
- CUDA凸壳程序在大输入时崩溃
- 三维凸壳CGAL::halfspace_intersection_3与exact_constructionkernel
- 为凸壳绘制矿区矩形