昨天我遇到了 Craig Reynolds 的Boids,随后我想我会尝试用 Java 实现一个简单的 2D 版本。我根据康拉德·帕克的笔记整理了一个相当基本的设置。
但是,我得到了一些相当奇怪(在我看来)的行为。目前,我的身体相当快地移动到粗糙的网格或格子中,然后当场开始抽搐。我的意思是它们会四处移动并且非常频繁地旋转。
目前,我已经实现:
- 结盟
- 凝聚
- 分离
- 限速
最初,我的 boids 随机分布在屏幕区域(与 Parker 的方法略有不同),它们的速度都指向屏幕区域的中心(请注意,随机初始化的速度给出相同的结果)。改变速度限制值只会改变物体进入这个模式的速度,而不是模式的形成。
在我看来,这可能是:
- 我正在使用的参数的结果(现在我的代码如 Parker 的伪代码中所述;我还没有尝试过由 Reynolds 描述的角度和半径定义的影响区域。)
- 我需要实施但不知道的东西。
- 我做错了什么。
预期的行为将更像是在 Reynolds 的 boids 页面上的小程序中发生的事情的二维版本,尽管现在我还没有实现任何方法来将 boids 保持在屏幕上。
有没有人遇到过这个?关于原因和/或如何解决它的任何想法?如果有帮助,我可以发布相关行为的 .gif 文件。