【发布时间】:2021-07-24 19:48:14
【问题描述】:
我有一个 boids 植绒模拟设置。它最初的工作原理是让每个 boid 循环通过每个 boid,以便它们都不断知道彼此的位置,以便判断它们是近还是远,但后来我切换到四叉树设计,这样 boid 只需循环通过实际上在附近的生物。但是,它对模拟的 FPS 几乎没有任何改进。就好像我还在循环遍历每一个 boid。
我的实现中是否有一些错误? repo 为here,相关代码主要在main.js、quadtree.js、boid.js。直播网站是here
【问题讨论】:
-
那么...如果小虫子在移动,您必须为每一帧重新创建四叉树吗?
-
正确,我每帧都重新创建四叉树。
-
@Ouroborus 你知道有什么方法可以很好地处理像boids这样的移动物体吗?
-
@Ouroborus - 为了正确起见,我认为您的意思是说使用距离平方而不是距离会删除 SQRT 操作,对吗?
-
@Ouroborus 你提到四叉树每帧都在构建,这否定了它的用处;我不认为这是真的。对于单个帧,如果将所有内容放入四叉树中,由于四叉树的空间划分,每个 boid 将不得不对该帧进行较少的邻居检查。问题是邻居检查的节省是否超过了四叉树的构建。如果你分析他的代码,你会发现你的赌注是错误的。绝大多数时间都花在查询四叉树上,而四叉树的构造相对来说微不足道。
标签: javascript complexity-theory quadtree boids