【发布时间】:2016-03-27 00:12:09
【问题描述】:
我有一个点云数组(一组已确定在自己的区域内的点)。
我们的目标是结合这些单独的集群,它们要么是
我。相交
二。在彼此之间的最小距离内
Check ii 使这变得更加困难。为了快速处理这些点云,我正在创建 AABB(沿 X 轴对齐的轴对齐边界框)。
我目前的方法是使用分离轴定理的一些属性:
- 为每个点云创建 AABB
- 对于每个 AABB,检查它们是否重叠,方法是将它们投影到随机轴上,然后按照它们落在这条线上的位置 o(nlog(n)) 对这些线性投影进行排序。然后,我浏览此列表以使用 SAT 检查交叉点 O(N)。大多数 AABB 的线性投影不会重叠,因此不会相交,而那些我可以手动检查的(因为 1D 中没有重叠保证没有相交,但反之则不然)。
最后一部分是我卡住的地方。完成上述一维投影是为了避免 O(n^2) 成对检查交叉点。但是为了组合在某个阈值内但不相交的凸多边形,我看不到 O(N^2) 成对检查的方法。
有没有一种方法可以构建一些树或图形来组合彼此在一定距离内的所有凸多边形而不检查每个成对组合?
如果您使用我从 1 和 2 中的步骤,您可以假设剩余的点云/AABB 不相交。
编辑
一种可能的解决方案是将threshold/2 添加到AABB 的宽度和高度,并检查交叉点。如果它们相交,那么我可以检查两个实际的交叉点(这对 AABB 来说很快),以及两者之间的最小距离。
【问题讨论】:
-
你能告诉我AABB的定义吗?
-
轴对齐边界框(沿 X 轴对齐)。 studiofreya.com/3d-math-and-physics/…
-
我觉得你的问题听起来太花哨了,这也意味着令人困惑。基本上,您正在检查常规框是否彼此太近,但您尚未将框定义为集群中的单个点(您所说的点云)或集群的中心,其半径是您问题中的阈值。你能澄清你的问题的描述吗?干得好 AABB:D
-
是的。我将 AABB(轴对齐边界框)添加到这些点云中。我想检查交叉点,或者是否有任何框在与另一个框的最小距离内。我可以在 nlogn 中完成第一部分。第二部分我不能没有 N^2 解决方案。不过,我试图让这一点更清楚!
标签: algorithm geometry nearest-neighbor convex