【发布时间】:2018-04-07 21:08:00
【问题描述】:
我有一组静态的简单多边形(它们可能是非凸的,但不是自相交的)和大量的查询椭圆。假设这一切都是在 2D 中完成的。我需要找到每个椭圆与最接近该椭圆的多边形之间的距离。距离分别定义为椭圆和多边形上任意两点之间的短距离。如果椭圆与多边形相交,那么我们可以说距离为 0 或指定一些负值。
蛮力方法将简单地计算每个椭圆和每个多边形之间的距离,并在 O(mn) 时间内返回最短距离,其中 m 是多边形数,n 是每个多边形的平均顶点数。我想在这里减少 m 项,因为我认为我可以通过一些空间分析来剔除正在考虑的多边形数量。
我考虑了一些方法,包括 Voronoi 图和 R-trees 和 kd-trees。但是,其中大多数似乎都涉及点,我不确定如何将它们扩展到多边形。我认为最有前途的方法包括为每个多边形和椭圆计算边界框,并使用 R-tree 来查找附近的一组多边形。但是,我并不是很想找到这组紧密的多边形的最佳方法。或者我忽略了一个更好的方法。
【问题讨论】:
-
你如何表示你的椭圆? TTBOMK 没有库功能。
-
请确认椭圆有任意方向和大小。
-
是的,椭圆有任意方向和大小。我目前用一个点和两个距离(半长轴和半短轴)表示它们,但如果需要,我愿意更改表示。
-
更正:我的意思是两个向量,不是两个距离,抱歉。
标签: algorithm search data-structures computational-geometry boost-geometry