Skip to main content
 首页 » 编程设计

python之如何从两个的交集制作矩形

2025年05月04日16unruledboy

我正在研究一个 breakout clone,我一直在尝试找出如何获得两个碰撞 rect 的交点 rect,这样我就可以测量球在 x 轴和 y 轴上进入 block 的深度并决定哪个我将反转的速度分量。

我想我可以像这样计算每种情况的深度:

但是如果我的十字路口是直的,那么我就不必担心球是从左/右 或上/下 击中方 block 的(因为我只会分别反转 x 和 y 轴),从而节省了我大量的输入。

我看过Pygame's docs但似乎它没有这个功能。我将如何着手解决这个问题?

请您参考如下方法:

假设你有矩形r1和 r2 , 与 .left, .right, .top, and .bottom边缘,然后

left = max(r1.left, r2.left); 
right = min(r1.right, r2.right); 
top = max(r1.top, r2.top); 
bottom = min(r1.bottom, r2.bottom); 

(通常坐标从上到下和从左到右增加)。最后,检查 left<right和 top<bottom , 并计算面积:

Area = (right - left) * (top - bottom); 

或者,您可以使用 clip()函数。从您在问题中链接的文档:

clip(Rect) -> Rect Returns a new rectangle that is cropped to be completely inside the argument Rect. If the two rectangles do not overlap to begin with, a Rect with 0 size is returned.