算法服从

藏宝库编辑 2024-10-1 02:27:34 114 0 来自 中国
书名:代码本色:用编程模仿自然体系
作者:Daniel Shiffman
译者:周晗彬
ISBN:978-7-115-36947-5
第6章目次
6.14 算法服从(为什么步调跑得这么慢)



  • 群集活动看起来很不可思议,但它的运行速率会非常慢,群会合的元素越多,步调运行得越慢。
1、优化方法


  • 如果我们把屏幕分别成一个个网格,把这2000个Boid对象分配到这些网格中。对于每个Boid对象,只需查抄同一单位格内的其他元素。这种技能称为“网格空间分割”
2、怎样用Processing实现这种算法?


  • 可以用多个ArrayList实现,此中一个ArrayList用于生存全部的Boid对象,就像群集示例中做的。
    ArrayList<Boid> boids;
  • 除了这个ArrayList,我们还在另一个二维ArrayList中存放了每个Boid对象引用。对网格中的每个单位格,都有一个对应的ArrayList用于生存此单位格内的元素。
    ArrayList<Boid>[][] grid;
  • 在draw()函数中,每个Boid元素都需要根据位置将本身放入符合的单位格内。
int column = int(boid.x) resolution;int row = int(boid.y) resolution;grid[column][row].add(boid);

  • 当Boid对象查抄邻居元素时,只需查抄某个单位格内的元素(现实上,为了处理处罚好边界情况,我们还应该查抄相近的单位格)。
3、示例

示例代码6-10 网格空间分割(略)
4、结果

1.png
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-21 20:50, Processed in 0.155616 second(s), 35 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表