【发布时间】:2010-12-02 16:57:28
【问题描述】:
我知道我可以使用 KD-Tree 来存储点并快速迭代其中接近另一个给定点的一小部分。我想知道线条是否有类似的东西。
给定 3D 中的一组行 L(要存储在该数据结构中)和另一个“查询行”q,我希望能够快速遍历 L 中的所有行与 q “足够接近”。我打算使用的距离是两点 u 和 v 之间的最小欧几里得距离,其中 u 是第一行的某个点,v 是第二行的某个点。计算该距离不是问题(有一个涉及叉积的好技巧)。
也许你们有一个好主意或知道在哪里寻找论文、描述等......
TIA, 秒。
【问题讨论】:
-
此距离始终为 0,除非线条平行。还是您在谈论 segments 行?
-
其实没关系。如果有帮助,我可以把它做成线段。但是无限长的线也很好。我不指望结果会改变。我目前用两个点参数化我的线,我希望点 u/v 位于这些线段上。
-
嗯,在 3D 中,两条线在不平行的情况下可能不会相互交叉,因为它们可以在不同的平面中。
-
抱歉,我错过了“3D”部分。现在一切都清楚了。
-
顺便提个有趣的问题。
标签: c++ algorithm data-structures geometry nearest-neighbor