c# - 简单聚类算法 2D。检测点簇

标签 c# algorithm

任何人都知道用 C# 实现的简单算法来检测 2D 游戏中的怪物组。

例如: char周围100范围内有怪物。我想检测哪些怪物在彼此范围 2 内,如果至少有 5 个怪物在一起,则在该位置使用效果区域技能。否则使用单目标技能。

如果有一个实现的链接就更好了,最好是 C#。我只是在阅读维基百科文章时迷失了方向。

编辑: “你的问题不完整。你到底想做什么?你想找到所有组吗?最大的组?任何组,如果有组,没有其他组?请更具体一些。” -吉拉德霍赫

我想找到主角周围 100 个单位范围内的所有群体。如果至少有 5 个或更多怪物都在彼此 2 范围内,或者可能在距中心怪物 10 范围内,则应形成组。

因此结果可能应该是一个新的组列表或潜在目标位置列表。

最佳答案

k-mean算法是一个非常简单的聚类算法。就像

  • 创建随机点
  • 将所有点分配给最近的点,并创建组
  • 将原始点重新定位到组的中间
  • 多次执行最后两个步骤。

您可以在这里找到一个实现,或者只是在 google 上搜索“kmean c#”

http://kunuk.wordpress.com/2011/09/20/markerclusterer-with-c-example-and-html-canvas-part-3/

关于c# - 简单聚类算法 2D。检测点簇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12736395/

相关文章:

c# - SQL Server 中哪种方法更快?返回通过 DataTable 使用的 XML 数据或原始数据?

c# - 在没有刷新/提交的情况下强制执行查询

c# - 使用 Linq-to-SQL 同时向不同表插入数据

c# - 我如何根据大型值数据库解析自由文本(Twitter 推文)?

c# - 使用 download.aspx 时加载图像缓慢

c# - 使用 PadRight 方法填充字符串

swift - SpriteKit : Creating a tile based maze

c - 《Algorithms in C part 1-4》p172 shellSort中的for(h=1;h<=(r-1)/9;h=h*3+1)循环是什么意思?

c# - 找出给定长度的所有可能单词的好方法是什么

JAVA - 多线程Mergesort的排序速度