对于我正在做的一个项目,我试图写一些代码来检测二维空间中非点粒子之间的碰撞。我的目标是尝试检测几千个粒子的碰撞,每个时间步至少检测几次,我知道这对python来说是一个很高的要求。我遵循了这个实现四叉树的blog post来显著减少我需要进行的成对检查的数量。所以我认为我遇到的问题是这个功能:def get_index(self, particle):

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.y < h_midpoint and bounds.y + bounds.height < h_midpoint

bot_quad = bounds.y > h_midpoint

if bounds.x < v_midpoint and bounds.x + bounds.width < v_midpoint:

if top_quad:

index = 1

elif bot_quad:

index = 2

elif bounds.x > v_midpoint:

if top_quad:

index = 0

elif bot_quad:

index = 3

return index

这个函数在我最初的分析中是一个瓶颈,我需要它快速膨胀,因为它的高调用计数。最初,我只是提供一个对象轴对齐的边界框,它几乎以我需要的速度工作,然后意识到我无法确定哪些粒子可能实际上正在碰撞。所以现在我将一个粒子列表传递给我的四叉树构造函数,并使用类属性aabb来获取边界。在

有没有什么方法可以把类似的东西传递给一个对象指针而不是整个对象?另外,还有其他的建议来优化上面的代码吗?在

python多叉树_python中高效的四叉树实现相关推荐

  1. python map用法_Python中ChainMap的一种实用用法

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 简而言之ChainMap:将多个字典视为一个,解锁Python超能力. Python标准库中的集合模块包含 ...

  2. python基本统计量_Python中简单统计量的计算

    本篇文章给大家带来的内容是关于Python中简单统计量的计算,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.这些操作都要确保已经在电脑中安装好了Anaconda集成库,如果安装好 ...

  3. python解析原理_Python 中 -m 的典型用法、原理解析与发展演变

    在命令行中使用 Python 时,它可以接收大约 20 个选项(option),语法格式如下: python [-bBdEhiIOqsSuvVWx?] [-c command | -m module- ...

  4. python正则表达式空格_python中的正则表达式的使用

    一.正则表达式简介 正则表达式:又称正规表示式.正规表示法.正规表达式.规则表示式.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或者是RE),是计算 ...

  5. python wraps模块_python中 wraps 的作用

    这里使用两段代码比较加入wraps装饰器后,函数打印的结果对比: 新建文件名:Testword 代码1:不加wraps装饰器 # coding=utf-8 from functools import ...

  6. 用python输出数组_Python 中输出数组中的全部元素

    只需要在开头加上一句即可 import numpy as np np.set_printoptions(threshold=np.inf) Python 输出到文本中 参考:https://blog. ...

  7. python 获取json中最大值_Python中高效使用JSON的四个小窍门

    字典和列表是Python的两种数据类型,也是用来处理JSON的完美工具.本文将主要分享以下内容: ·如何载入.编写JSON? ·如何在命令行上优化.校验JSON? ·如何通过使用JMESPath对JS ...

  8. python yield用法_Python中迭代器和生成器的区别?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  9. python主程序流程图_python中的图形渲染(流程图可视化)

    Graphviz是我看来最好的选择. Graphviz是首映式渲染/布局库;它是成熟的,稳定的,开源的,免费的.它不是一个专门的流程图或图表包,而是核心用例 – 即由节点和边缘组成的对象的高效和美观渲 ...

  10. python同步异步_python中Tornado的同步与异步I/O的介绍(附示例)

    本篇文章给大家带来的内容是关于python中Tornado的同步与异步I/O的介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 协程是Tornado种推荐的编程方式,使用 ...

最新文章

  1. 清华校长一针见血:这类孩子看起来很聪明,长大后却容易没出息
  2. pl/sql链接64位oracle数据库报错Could not initialize oci.dll
  3. 快速了解一门技术的基本步骤
  4. 重学java基础第六课:markdown语法
  5. Linux 核心模块,LINUX核心及核心模块的简单介绍
  6. T3 - 构建大型 Web 应用的 JavaScript 框架
  7. Mac os 进行Android开发笔记(1)
  8. 徐家骏:华为十年感悟
  9. 达内java晨讲案例_达内java飞机大战(完成版)
  10. 地区的省市区联动数据样例
  11. 计算机键盘在线识别,电脑的外接键盘无法识别怎么办?
  12. 互动拍照 — 子弹时间
  13. 3d效果图设计师接私单的渠道介绍和避坑指南
  14. 看图猜成语微信小程序源码
  15. 用友系统客户端登录不上服务器,图文详解用友客户端连不上服务器解决方法.pdf...
  16. ASCII字符代码表
  17. 手机上传图片文件只能打开相机
  18. 单独某个设置feign接口的超时时间
  19. Python爬虫爬取笔趣阁小说
  20. mysql最快导表,IIS通过ISAPI_Rewrite完美实现Wordpress伪静态 | 沉默过客

热门文章

  1. 魔兽地图编辑器插件YDWE的使用与基本设置4 物体编辑器、启动游戏测试、查找物品
  2. 如何有效破解PDF文件的密码?
  3. 中文简体繁体转换(JS 字符串 简体转繁体 繁体转简体)
  4. MYSQL-Front新手连接数据库总结
  5. 支持所有浏览器的右键菜单
  6. hd计算机技术,BD和HD的区别是什么?
  7. 使用 RuPengGame游戏引擎包 建立游戏窗体 如鹏游戏引擎包下载地址 Thread Runnable 卖票实例
  8. 虚拟偶像春天来临,谁能从中脱颖而出?
  9. 海量图片上传及存储方案
  10. 百度黑洞效果实现原理