【发布时间】: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