代码之家  ›  专栏  ›  技术社区  ›  scubabbl

快速实体分组(按位置)算法

  •  4
  • scubabbl  · 技术社区  · 17 年前

    我正在与一大群存储位置的实体打交道。它们显示在地图上。我试图想出一种有效的方法,从更高的位置观察时,将附近的实体组合成一个实体。因此,例如,如果你很高,往下看时,你会看到一个实体代表一个区域中一组位置相近的实体。放大到足够近的程度会将该实体拆分为其包含的实体。

    有没有一种有效的算法可以做到这一点?我考虑过根据高度将视图网格化,根据位置将实体放入网格框中,然后渲染框点。我唯一关心的是,如果所有实体都在该框的右上角,则表示它们的实体可能会居中,而不是实体组的位置。

    有什么想法或想法吗?

    3 回复  |  直到 17 年前
        1
  •  1
  •   Charles Bretana    17 年前

    我相信你正在寻找的是一种“聚类算法”。有很多可用的。一个好的开始可能是 K-means Algorithm 最终,尽管听起来你想要某种层次聚类算法。

        2
  •  1
  •   Stefan    17 年前

    如果您将实体预先分配到实体组中,或者某个“视野”中的所有实体都自动分配到“组”中,那么您可以使用“质心”算法为实体组分配一个“位置”,实际上纬度只是所有包含纬度的平均值,经度也是如此。..对于两个维度,将它们相加并除以计数。..

    如果你想要一个算法来“创建”分组,那么你需要指定一些业务规则,以便在从你进行计算的高度“查看”到两个候选组时,如何决定一个实体应该属于两个或多个潜在组中的哪一个。

        3
  •  1
  •   oz10    17 年前

    我认为蜂拥而至有助于在这里创建这些团体。因为看起来想要相互聚集的不同实体应该是一个群体的一部分。

    http://arxiv.org/abs/math?papernum=0502342

    http://flashorbit.com/?page_id=40

    在计算羊群数量时,“Boids”似乎在同一个街区。 http://www.red3d.com/cwr/boids/