【问题标题】:Efficient collision detection between balls (ellipses)球(椭圆)之间的高效碰撞检测
【发布时间】:2013-08-24 16:35:06
【问题描述】:

我正在使用 Processing.js 在 HTML5 画布中运行一个简单的草图,它创建“球”对象,这些对象只是具有位置、速度和加速度矢量以及直径的椭圆。在 draw 函数中,我调用了一个名为 applyPhysics() 的函数,该函数循环遍历 hashmap 中的每个球,并相互检查它们的位置是否会导致它们崩溃。如果他们这样做了,他们的速度向量就会被反转。

长话短说,现在的计算数量是(球数)^2,当我进入数百个球时,它最终会很多。使用这种检查会使草图减慢太多,所以我正在寻找以其他方式进行智能碰撞的方法。

有什么建议吗?也许以某种方式使用 PGraphics?

【问题讨论】:

    标签: html5-canvas collision-detection processing


    【解决方案1】:

    我假设您已经通过将椭圆视为圆来简化物理。

    除此之外,查看四叉树碰撞检测:

    http://gamedev.tutsplus.com/tutorials/implementation/quick-tip-use-quadtrees-to-detect-likely-collisions-in-2d-space/

    我不知道你的项目,但如果球上施加了非随机力(例如重力),你也可以使用预测分析。

    【讨论】:

    • 是的,我喜欢这个四叉树算法!谢谢!我现在就开始尝试实现它。
    【解决方案2】:

    如果您对空间进行网格化并创建一个反映这一点的数据结构(例如,一个行对象数组,每个包含一个列对象数组,每个列对象包含一个球对象的 ArrayList),您可以只考虑每个单元格内的交互(或者也与相邻单元格)。您可以为跨越边界的球重新分配数据位置。这样您的互动就会少得多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-05
      • 1970-01-01
      • 1970-01-01
      • 2018-06-02
      • 2016-08-08
      • 1970-01-01
      • 2010-12-27
      • 2012-09-09
      相关资源
      最近更新 更多