作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
昨天我遇到了 Craig Reynolds 的 Boids ,随后我想我会尝试用 Java 实现一个简单的 2D 版本。我根据 Conrad Parker's notes 整理了一个相当基本的设置.
但是,我遇到了一些相当奇怪的(在我看来)行为。目前,我的 boids 相当快地移动到一个粗糙的网格或格子中,并继续当场抽搐。我的意思是它们会四处移动并非常频繁地旋转。
目前,我已经实现了:
最初,我的类群随机分布在屏幕区域(与帕克的方法略有不同),并且它们的速度都指向屏幕区域的中心(请注意,随机初始化的速度给出相同的结果)。更改速度限制值只会改变 boids 移动到此模式的速度,而不是模式的形成。
在我看来,这可能是:
预期的行为将更类似于 Reynolds 的 boids 页面上的小程序中发生的二维版本,尽管现在我还没有实现任何方法来将 boids 保持在屏幕上。
有没有人遇到过这个?关于原因和/或如何解决它的任何想法?如果有帮助,我可以发布相关行为的 .gif 图像。
最佳答案
也许您对分离规则的权重太高,导致所有的类群都尽可能远离所有相邻的类群。我的伪代码中有各种常量作为权重:规则 1 中的/100 和规则 3 中的/8(以及规则 2 中的隐式 *1);这些可以进行调整,这通常可用于模拟不同的行为,例如近距离聚集的昆虫或滑翔的鸟类。
还有任意|距离|应修改分隔规则中的 < 100 以匹配您的模拟单位;这条规则应该只适用于距离很近的 boid,基本上是为了避免碰撞。
玩得开心!
关于java - 植绒小鸟行为问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6209829/
我是一名优秀的程序员,十分优秀!