二叉树深度遍历算法,多叉树的深度优先遍历
在我的项目中,我试图编写代码来检测二维空间中非点粒子之间的碰撞。我的目标是检测成千上万个粒子的碰撞,每个时间步至少几次。我知道这对python的要求非常高。我跟踪了实现这种四叉树的博文,它显著减少了我需要做的配对检查的数量。所以我觉得我面临的问题就是这个功能。defget_index(自身,粒子) :
索引=-1
bounds=particle.aabb
v _ midpoint=self . bounds . x self.bounds.width/2
h _ midpoint=self . bounds . y self.bounds.height/2
top _ quad=bounds . yh _ midpointandbounds . ybounds . heighth _ midpoint
bot_quad=bounds.y h_midpoint
ifbounds。XV _ midpointandbounds . x bounds . width v _ midpoint:
如果top_quad:
指数=1
elif bot_quad:
指数=2
elif bounds.x v_midpoint:
如果top_quad:
指数=0
elif bot_quad:
指数=3
回报指数
这个函数是我第一次分析的瓶颈。调用次数非常多,需要快速扩展。最初,我们注意到只有通过提供具有对齐的对象轴的边界框,我们才能以所需的速度工作,并识别可能实际碰撞的粒子。现在,将粒子列表传递给四叉树构造函数,并使用类属性aabb检索边界。在
有什么方法可以传递类似于对象指针的东西,而不是整个对象?除此之外,还有其他优化上述代码的建议吗?在