4


2

私は場所を格納するエンティティの大規模なグループを扱っています。 それらは地図上に表示されます。 高い場所から見たときに、近くにあるエンティティを1つのエンティティにグループ化する効率的な方法を考え出します。 そのため、例えば、あなたが非常に高い場合、見下ろしたときには、エリア内の近接したエンティティのグループを表す1つのエンティティが表示されます。 十分にズームインすると、そのエンティティは含まれているエンティティに分割されます。

これを行うための効率的なアルゴリズムはありますか? 高さに基づいてビューをグリッド化し、位置に基づいてエンティティをグリッドボックスにドロップしてからボックスポイントをレンダリングすることだけを考えました。 私の唯一の懸念は、すべてのエンティティがそのボックスの右上にある場合、それらを表すためにレンダリングされたエンティティがエンティティのグループの場所ではなく中央に集中する可能性があることです。

考えやアイデアはありますか?

3 Answer


1


エンティティをエンティティグループに事前に割り当てる場合、または特定の「視野」内のすべてのエンティティが自動的に「グループ」に入る場合は、「中心」を使用してエンティティグループに「場所」を割り当てることができます。質量 "アルゴリズム、事実上緯度はちょうど含まれているすべての緯度の平均であり、経度についても同じです。 両方の次元について、emを足して数で割ります…​

アルゴリズムでグルーピングを「作成」したい場合は、2つ以上のグループの候補のうちどれに属するべきかを決定するためのビジネスルールを指定する必要があります。あなたが計算をしている高さ。


1


私は群れがここでそれらのグループを作成するのに役立つことができると思います。 それは互いに集まりたいと思う異なる実体がグループの一部であるべきであるように思われるので。

群れを計算すると、「Boids」は同じ近傍にあるようです。 http://www.red3d.com/cwr/boids/


1


私はあなたが探しているのは「クラスタリングアルゴリズム」だと思います。 利用可能な多数があります。 よいスタートは K-means Algorithmです。 究極的には、ある種の階層的クラスタリングアルゴリズムが欲しいように思えますが。