CGAL的2D范围搜索和相邻搜索

1、介绍

        几何查询是计算几何中许多应用的基础。任务是以这样一种方式维护一组动态几何对象,即可以有效地执行某些查询。查询的典型示例是:找出给定对象是否包含在集合中,找到位于给定区域(例如矩形)中的集合中的所有对象,找到最靠近给定点的对象,或者找到集合中彼此最靠近的一对对象。此外,在对象的删除和插入可以有效执行的意义上,该集合应该是动态的。

        在计算几何文献中,可以找到许多不同的数据结构来维护几何对象集。其中大多数都是为支持一种非常特殊的查询操作而开发的数据结构。例如,用于回答最近邻居搜索的Voronoi图、用于正交范围查询的范围树、用于更通用范围查询的分区树、用于点位置的分层三角图和用于交叉查询的分段树。

        在许多应用程序中,必须对同一组对象执行不同类型的查询。解决这个问题的一种简单方法是使用上述数据结构的集合来表示对象集,并将每个查询操作委托给相应的结构。然而,这是完全不切实际的,因为它使用了太多的内存,并且需要在存在更新操作的情况下维护所有这些数据结构。

        理论上非最优的数据结构在实践中似乎对许多这样的查询表现得很好。例如,Delaunay图是一种非常强大的数据结构,用于存储范围和最近邻查询下的动态点集。

        在本节中,我们介绍了一种支持各种几何查询的二维点集数据类型的通用变体。本节中的Point_set_2类继承自二维C++ Delaunay三角剖分数据类型。Point_set_2 类依赖于两个模板参数 T1 和 T2。它们用作 Point_set_2 类继承的 Delaunay_triangulation_2 类的模板参数。T1 是几何特性的模型,T2 是 Delaunay 三角化所需的三角化数据结构的模型。

        Point_set_2 类支持以下类型的查询:环形范围搜索;三角范围搜索;等距矩形范围搜索;(k) 最近邻居。

CGAL 5.6 - 2D Range and Neighbor Search: User Manual

你可能感兴趣的:(CGAL,几何学,算法)