【问题标题】:Collision detection between image layers and shapes图像层和形状之间的碰撞检测
【发布时间】:2014-10-24 13:57:06
【问题描述】:

如何有效地检测图像层和生成的形状之间的碰撞?

我需要一种快速而全面的方法来检测可旋转图像层和生成的形状之间的碰撞。

到目前为止,我只是将图像划分为包含大部分像素的一系列圆圈,然后针对其他形状测试每个圆圈。为了提高性能,我在每个结构周围创建了周边圆圈,并且只测试这些较大的圆圈,直到两个结构接近到足以碰撞为止。

真正的问题是很难将可旋转的矩形碰撞到这些图像结构之一中。用圆圈填充矩形似乎也没有效率。更不用说我得到了组合爆炸,这使得循环非常复杂并且性能很差。

有谁知道处理这种碰撞的更好方法?我用 Java、Python 和 C 编写。我也愿意使用 C++。

【问题讨论】:

  • 我在 gamedev.SE 上看到过类似的问题,请确保您浏览过该网站

标签: java python c algorithm collision-detection


【解决方案1】:

通常,球体碰撞只是用于实际碰撞测试的过滤器。

您可以:

  • 决定将碰撞限制在此范围内,例如在游戏中。
  • 实现真正的碰撞并做完整的数学运算。您基本上与两个矩形的旋转边缘相交(16 例)。将两条边作为线相交,只有一个交点(除非它们是平行的),如果该点在线段内,就会发生碰撞。

为了限制复杂性,您可以使用四叉树/八叉树。将您的空间分成四个矩形,然后将这些矩形分成四个等......直到它们太小而无法容纳对象或为空。将您的可碰撞对象放入将包含它们的树的最特定部分。两个对象只有在同一个子矩形中或一个在另一个的任何父级中时才会发生碰撞。

不确定这是否有帮助,但它们是想法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-26
    • 2014-05-05
    • 2011-08-17
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多