【问题标题】:Inaccurate Rectangular Collision Detection in pythonpython中不准确的矩形碰撞检测
【发布时间】:2014-01-03 01:20:39
【问题描述】:

我有以下代码:

def collideRect(r1,r2,r3,r4):
    """Tests for collisions between two rectangles"""
    if r1[0]<r4[0] and r2[0]>r3[0] and r1[1]<r4[1] and r2[1]>r3[1]:
        return True
    return False

这是一个简单的测试,看两个矩形区域是否相交(其中 r1 和 r2 是定义矩形的两个坐标,即对角,r3 和 r4 代表第二个矩形)。

不过,等式中有一个非常简单的漏洞,如果一个矩形由左上角和右下角坐标定义,第二个矩形由其右上角和左下角坐标定义,测试将不准确。

举个例子:

>>>r1, r2 = (0, 0), (10, 10)
>>>r3, r4 = (0, 10), (10, 0)

>>>collideRect(r1 ,r2 ,r3, r4)
False

对于我使用此函数的应用程序,我需要它具有足够的通用性,以便能够准确计算矩形交点,而无需为两个矩形定义相同的角。

什么是解决这个问题的简单方法?

【问题讨论】:

  • 事实证明碰撞检测是一个不平凡的问题。更不用说定义对角意味着你可以有旋转和无效的矩形。

标签: python


【解决方案1】:

您可以使用以下函数确保您拥有左下角和右上角:

def standardize(p1, p2):
    xs, ys = zip(p1, p2)
    return (max(xs), max(ys)), (min(xs), min(ys))

【讨论】:

  • 谢谢,完美!我意识到这个问题很简单,我可能应该自己解决,但无论如何感谢您帮助我!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-12
  • 2016-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多