问题标签 [boids]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
136 浏览

multithreading - 尝试更改内容时,Scala 摆动面板消失(仅在运行线程时)

因此,我正在编写一个 boid 模拟程序作为学校项目。我的程序支持这些不与其他组一起聚集的多个不同组,它们都有不同的设置,我通过在创建新部落时向程序的主 GUI 添加一个 BoxPanel 来完成,并且这些 BoxPanel 有一个设置按钮打开一个带有组设置的新框架。

当我启动程序并添加代码中所有预定义的部落时,这非常有效。现在我制作了 GUI 的一个新部分,让您可以创建这些 boid 的新组并在模拟运行时添加它们,这就是我遇到问题的时候。

由于某些奇怪的原因,它添加了组就好了,在模拟中具有正确的设置,但它不会将 BoxPanels 添加到主 GUI。它使我在模拟一侧的整个设置栏完全消失。我对此进行了测试,如果我在计算线程的开头添加部落,它会做同样的事情,所以这似乎是多线程和摆动的问题。任何想法是什么导致了这个或如何解决这个问题?我对此完全感到困惑。

tl; dr: 当我没有启动线程时,下面用于添加部落的代码可以正常工作,但是如果我在启动线程后尝试使用它,则 optionPanel 显示为空。

这是将 BoxPanels 添加到主 gui 的代码:

哦,我通过打印出内容的大小来测试它是否真的添加了它应该添加的内容,并且一切都匹配得很好,它只是不会绘制它们。

编辑:经过一番挖掘,它似乎真的是从线程更新摆动的事情。很多地方都建议使用 SwingWorker,但从我收集的有关它的信息来看,我认为它不适合我的程序,因为它是一个连续的模拟,而且我必须每帧都继续制作新的 SwingWorker。

EDIT2:尝试从线程中调用该方法,如下所示:

没有任何区别。我开始认为这是我如何使用 TribeBoxPanel 和 TribeSettingFrame 的问题。这些对象都只包含一个返回所需 BoxPanel 或 Frame 的方法。这个实现不好吗?如果是这样,创建动态 BoxPanel 和框架的更好方法是什么?

0 投票
1 回答
1471 浏览

java - Javafx 画布未正确清除。

我写了一个 Craig Reynolds Boids 的 java 实现。我最近更新了每个对象以用 .png 图像表示。自从我在图像中遇到显示问题以来。

解决问题的最佳方法是什么?

  • 我试过使用多边形,但是当我的坐标之一是负数时,三角形不能正确显示。

博德

主类:

群:

博德:

0 投票
0 回答
85 浏览

javascript - 如何使用 Canvas 和 JavaScript 创建一个简单的 Boids 模型?

我需要创建一个简单的行为模型,但在任​​何地方都找不到详细的手册。一些资源给了我其他编程语言的代码,但实际上没有人写完整的细节。请帮忙。

0 投票
1 回答
2326 浏览

c# - Boid 蜂拥而至正确跟随目标?

我正在尝试转换此处找到的 boid 植绒脚本: http ://wiki.unity3d.com/index.php?title=Flocking

要在我的 2D 游戏中工作,它可以工作,但羊群根本不跟随目标。羊群似乎只想以大约 20 度的角度向右和向上移动。我如何让羊群在这个脚本中追逐目标或“Chasee”?

为简单起见,我将大部分坐标保留为 Vector3,并在调整速度时将它们转换为 Vector 2。

然后是植绒行为

0 投票
1 回答
47 浏览

arraylist - 将老化添加到 Boid 模拟

我正在扩展这个草图:http ://www.openprocessing.org/sketch/11045

尝试使用 frameCount 将老化添加到 boids 代理。我用内置的年龄初始化 ArrayList:

然后检索它:

我想在生命周期中使用这样的东西:

但我不确定我应该把它放在代码的哪个位置。这也是最好的方法,还是我把事情复杂化了?

更新:我写了一个新方法:

从以下位置调用:

0 投票
1 回答
45 浏览

java - 从另一个类修改 ArrayList 对象值

我有两个类:包含 ArrayList boids 的类 Creature 和类 Food。Boid 有几个参数:

食物类有这个方法:

我想要实现的是,如果一个 boid “吃”了食物,他们的 boid 类型(btype)从 2 变为 1。

我正在尝试使用 bnumadj 变量在此方法中将其反馈给 boid:

我哪里错了?

0 投票
1 回答
3644 浏览

python-2.7 - Python boids 实现

我正在尝试在 python 中实现一个相当基本的 boids 模拟。我的目标是模拟一个基本的捕食者猎物设置。我在这里找到了一些伪代码(不能发布两个以上的链接,但如果你用谷歌搜索,这是第一个结果boids pseudocode)和一些代码并决定试一试。因为我想添加捕食者,所以我决定将我找到的代码修改为精灵(将成为猎物),然后从那里开始。但是,我遇到了这个问题。

在我修改代码以使用 pygame sprites 后,所有的 boid 都移到了右下角(原始代码工作正常)。

我的代码(只是克隆 repo)在这里(github)。有没有人遇到过第一个问题?有没有人有任何想法来解决它?至于问题2,有人可以解释一下如何做到这一点吗?

谢谢你,任何帮助将不胜感激。

附言

除了它们总是移动到右下角这一事实之外,boid 的行为(它们的运动)似乎运行良好。

聚苯乙烯

多亏了 furas,猎物现在行为正常。

购买力平价

由于调试问题已经解决,我剩下的问题部分涉及解释,我认为应该是主题。

0 投票
1 回答
790 浏览

python - Boids 捕食者和障碍物行为

我正在使用 pygame 在 python 中进行 boids 模拟。基本行为有效,但我现在正在尝试添加避障和捕食者。到目前为止,我无法弄清楚如何实现这些行为。

首先,我试图让猎物逃跑,让掠食者发起攻击。为了做到这一点,我需要以某种方式找到最近的 boid。我该怎么做?

另外,为了避障,有人可以解释一下我如何让猎物避开静态障碍物,但不主动逃离?

我的完整代码在这里(github)。对于我将如何完成这两件事,我真的很感激任何和所有的解释。

谢谢!

编辑:

fucas 向我展示了如何做到这一点,但现在我遇到了一个新问题。

对于捕食者和猎物的行为,我现在有这个:

这对于猎物:

(此代码在所有其他规则之后最后应用)。

0 投票
2 回答
220 浏览

python - 在 Boid 模拟中定义速度

编程新手,对于我的第一个项目之一,我正在跟踪一个用于 boid 模拟的代码,但我不确定 sin 和 cos 函数在这部分代码中做了什么。

一般来说,代码是为 boids 设置随机向量,但为什么随机角度本身还不够呢?

什么是对单位速度的定义很重要的 sin 和 cos 函数?

它是否为单独计算的球体速度提供了参考范围?

0 投票
1 回答
131 浏览

javascript - 重绘对象时如何清除屏幕?

我正在尝试实现 boids 算法,一切都很顺利,直到使用 three.js 绘制鸟类(或立方体,在我的情况下)。

重绘后屏幕没有被清除,所以我什至在屏幕上看到了旧的立方体。

这是我的代码:

我只是找不到解决方案。

请询问,如果需要更多详细信息。提前致谢。:)