gpt4 book ai didi

java - 植绒小鸟行为问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:37:45 26 4
gpt4 key购买 nike

昨天我遇到了 Craig Reynolds 的 Boids ,随后我想我会尝试用 Java 实现一个简单的 2D 版本。我根据 Conrad Parker's notes 整理了一个相当基本的设置.

但是,我遇到了一些相当奇怪的(在我看来)行为。目前,我的 boids 相当快地移动到一个粗糙的网格或格子中,并继续当场抽搐。我的意思是它们会四处移动并非常频繁地旋转。

目前,我已经实现了:

  1. 对齐
  2. 凝聚力
  3. 分离
  4. 限速

最初,我的类群随机分布在屏幕区域(与帕克的方法略有不同),并且它们的速度都指向屏幕区域的中心(请注意,随机初始化的速度给出相同的结果)。更改速度限制值只会改变 boids 移动到此模式的速度,而不是模式的形成。

在我看来,这可能是:

  1. 我使用的参数的结果(现在我的代码如 Parker 的伪代码中所述;我还没有尝试过 Reynolds 描述的由角度和半径定义的影响区域。)
  2. 我需要实现但我不知道的事情。
  3. 我做错了什么。

预期的行为将更类似于 Reynolds 的 boids 页面上的小程序中发生的二维版本,尽管现在我还没有实现任何方法来将 boids 保持在屏幕上。

有没有人遇到过这个?关于原因和/或如何解决它的任何想法?如果有帮助,我可以发布相关行为的 .gif 图像。

最佳答案

也许您对分离规则的权重太高,导致所有的类群都尽可能远离所有相邻的类群。我的伪代码中有各种常量作为权重:规则 1 中的/100 和规则 3 中的/8(以及规则 2 中的隐式 *1);这些可以进行调整,这通常可用于模拟不同的行为,例如近距离聚集的昆虫或滑翔的鸟类。

还有任意|距离|应修改分隔规则中的 < 100 以匹配您的模拟单位;这条规则应该只适用于距离很近的 boid,基本上是为了避免碰撞。

玩得开心!

关于java - 植绒小鸟行为问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6209829/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com