已知两个矩形的八个坐标,碰撞检测代码
时间: 2024-09-07 07:02:17 浏览: 41
javascript制作游戏开发碰撞检测的封装代码
在二维空间中进行矩形碰撞检测,通常的方法是检查一个矩形的边界是否与另一个矩形的边界相交。给定两个矩形,每个矩形由左上角和右下角的两个点坐标确定,可以通过比较这些点坐标来判断两个矩形是否相交。
以下是一个简单的矩形碰撞检测的示例代码,假设矩形A的左上角和右下角坐标分别为`(xA1, yA1)`和`(xA2, yA2)`,矩形B的左上角和右下角坐标分别为`(xB1, yB1)`和`(xB2, yB2)`。
```python
def is_collision(rectA, rectB):
xA1, yA1 = rectA['top_left']
xA2, yA2 = rectA['bottom_right']
xB1, yB1 = rectB['top_left']
xB2, yB2 = rectB['bottom_right']
# 检查矩形A在x轴方向的最左是否在矩形B的最右的左侧
A_left = xA1 <= xB2
# 检查矩形A在x轴方向的最右是否在矩形B的最左的右侧
A_right = xA2 >= xB1
# 检查矩形A在y轴方向的最上是否在矩形B的最下侧的上方
A_top = yA1 <= yB2
# 检查矩形A在y轴方向的最下是否在矩形B的最上侧的下方
A_bottom = yA2 >= yB1
# 如果所有条件都满足,则矩形相交,发生碰撞
return A_left and A_right and A_top and A_bottom
# 示例矩形坐标
rectA = {'top_left': (10, 10), 'bottom_right': (20, 20)}
rectB = {'top_left': (15, 15), 'bottom_right': (25, 25)}
# 检测碰撞
collision = is_collision(rectA, rectB)
print("两个矩形是否碰撞:", collision)
```
在这个代码示例中,如果`collision`变量为`True`,则表示两个矩形发生了碰撞。
阅读全文