【问题标题】:generate a random path in 3 dimension在 3 维中生成随机路径
【发布时间】:2011-04-23 15:02:48
【问题描述】:

当我在一个需要模拟鱼的运动的项目中工作时, 我将鱼放在 3D 环境中,我希望它可以在一条看起来像真鱼一样的路径中游泳。 我想知道是否有任何算法可以生成准随机的鱼状路径?

祝大家好运。

【问题讨论】:

  • 当然,你可以生成一条随机路径,但它看起来一点也不像鱼的移动。您可能应该研究鱼是如何游泳的,并据此制定经验算法。
  • @JoshD 鱼若醉,文献多多....
  • 模仿鱼的“思考方式”是真正正确的方法,更糟糕的是,在你知道什么是“鱼般的游泳路径”之前,你甚至无法开始粗略的启发式方法看起来 像。你有办法判断自己的表现吗?
  • @belisarius:的确,我认为醉鱼和醉鸟一样不幸。
  • 恕我直言,Suige 先生,您在这里收到了几个有趣的回答。也许您应该考虑对您认为有帮助的答案进行投票。只是一个想法:-)

标签: algorithm random simulation


【解决方案1】:

尝试谷歌搜索“植绒算法”。 Bioroids 也值得研究。

【讨论】:

  • 植绒算法通常是指用#> 1对集合的行为建模
  • 没错,但也许在阅读这些主题时,他可能会想出一些想法来尝试适用于他的特定案例。
  • Errrrrr,我正在做一个只有一条鱼的项目,还是谢谢你
【解决方案2】:

这个fish simulation in Javascript (source code available) 模拟了二维的鱼运动;但是,它很容易修改为三个维度。您应该让系统进化鱼神经网络的大脑,以便查看完整效果或观看页面上发布的视频。

鱼的移动方式与带有两个踏板的坦克类似,其中给出了两个速度变量,允许鱼根据速度变量之间的差异旋转或向前移动。给出了一些参数,这样鱼就不会过度急转弯。对于每个时间步,鱼的加速度值由神经网络(通过进化训练)给出,每个“踏板”使用牛顿定律影响鱼的行走速度。你可以做一些更随机的事情,而不是使用神经网络;但是您需要将鱼可以转向的数量减少到非常小的范围。

【讨论】:

  • 是的,我从来没有考虑过把鱼当坦克,但你确实给我带来了一个很好的考虑。
【解决方案3】:

我曾经写了一个有趣的程序,我生成了随机移动的蠕虫。如果您不是在寻找太复杂的东西,可以肯定您可以在您的情况下使用相同的方法。我的尝试是一个非常简单的启发式方法。该解决方案适用于 2D,但您可以轻松地将其扩展到 3D。

我将创建一个概率矩阵,指示 fish[n] 在迭代 i+1 中沿每个方向移动的概率,例如:90% 表示保持在同一方向移动,2% 表示 45 度转向左侧,向右转 45 度为 2%,向左或向右转 90 度为 1%,等等。此外,您必须存储鱼当前移动方向的指示。百分比基本上是通过反复试验解决的,但这是微不足道的。

如果你想要平滑的运动,你可以选择一个新的点,鱼会移动到离它当前位置有一段距离的地方,然后像 3D 空间中的贝塞尔曲线一样计算轨迹。

【讨论】:

    猜你喜欢
    • 2017-12-11
    • 2015-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    相关资源
    最近更新 更多