根据它们之间的距离“分组”vecmath Point 对象

“Group” vecmath Point objects based on the distance between them

我有一大堆 vecmath Point 对象 (Point3d FWIM),我想根据它们之间的距离“分组”。我可能可以从头开始为此编写代码(我在 excel 中完成过类似的任务),但我喜欢尽可能使用现有库的想法。问题是我找不到这样的库。

我还没有完全想清楚具体的算法,但我希望我已经做得足够多了,问题不会被删除。请耐心等待,我post.

时这里还是新的

我想分组会按如下方式工作:

  1. 决定distanceLimit
  2. 循环1:对于每个Point,计算彼此的距离Point
  3. 做一个"Set"
  4. 循环 2:对于每个 Point

    • 如果下一个 Point 在之前考虑的任何 PointsdistanceLimit 之内,直到 i,将其添加到当前 "Set"

    • 否则制作一个新的"Set".

编辑:啊,表达一个人的想法的力量。上面没有捕捉到点 1 和点 2 相隔一到两个 distanceLimits 并启动单独 "sets" 并且点 3 突然出现在它们之间的情况,这意味着所有三个都应该在一个集合中。需要再考虑一下!

我也不确定我应该真正使用什么数据结构来输入和输出(ArrayLists?Sets?)。 理想情况下,我正在寻找一个可以执行此操作或类似操作的现有库;如果您确信没有,那么任何关于算法或实际代码的建议都将非常受欢迎。

经过多次谷歌搜索后,我发现:

  • 我尝试做的是聚类;
  • this 做了我想做的事;它对我的效果给我留下了深刻的印象。