【问题标题】:Which data structure can handle 2d line segments哪种数据结构可以处理二维线段
【发布时间】:2013-02-09 22:02:15
【问题描述】:

我有大量的二维线段。我想为给定的线段找到最近的线段,然后存储在向量中。所以,我想对每个线段执行此操作,以便我知道任何线段的最近线段。我所有的线段都是矢量形式,也就是说,我知道两个端点坐标。所以在我的数据行号中,begin (x,y,z), end(x,y,z) 都在那里。

为了获取线段,我想检查线段与另一条线段的端点之间的距离(this)。

我认为可能有一些数据结构会发生所有这些事情,并给出向量线段编号的向量或其他方式来识别邻近线段。我知道 kd-tree (k-nearest) 可以做类似的事情。但它是针对点数据的。

我试图用 opencv r-tree 函数来解决这个问题。但是由于我没有任何使用 r-tree 的经验,所以我无法使用,现在我很困惑,因为它说的是分类器并且有一个训练阶段。但就我而言,我觉得我不希望这样的事情发生。

如果有人知道任何函数或代码或库来做这类事情,请告诉我。

【问题讨论】:

  • “巨大”有多大?您必须使用哪种系统来解决问题? [如果是手机或每系统 64GB 和 16 核的 1000 机集群可能会有所不同]
  • @Mats Petersson:在我的数据中,有近 40,000 个线段与我有关。它的 1gb 内存和 1.4 ghz 双核机器。
  • 您是否有时间限制(例如,需要每 1/50 秒或类似时间执行一次)?
  • @Mats Petersson:没那么多。但我希望做这个数据结构,因为在做代码时处理数据可能会容易得多,因为我知道 sepeteate 接近线段。列表

标签: c++ data-structures


【解决方案1】:

虽然 OpenCV 没有用于线段的数据结构,但以下内容已经足够好用了。

struct LineSegment{
  Point2f a,b;
};

【讨论】:

  • @UlrichEckhardt,为什么?有没有我忽略的 C++ 约定?我从我的 C++ 程序中复制并粘贴了它。谢谢!
  • 感谢@UlrichEckhardt。现已修复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-17
  • 2014-10-02
  • 1970-01-01
  • 2010-09-18
  • 2018-06-23
  • 1970-01-01
相关资源
最近更新 更多