如何从两个交叉点制作rect?

时间:2013-12-10 02:32:03

标签: python pygame rect breakout

我正在进行突破性克隆,我一直试图弄清楚如何获得两个碰撞对象的交叉点,这样我就可以测量球在x和y中进入块的深度轴并确定速度I< ll的哪个部分反转。

我想我可以像这样计算每个案例的深度:

ball collision with blocks

但是如果我的交叉线比我还要担心球是否会从左/右顶部/底部击中阻挡(因为我只会分别反转x和y轴),因此节省了很多打字。

我看过Pygame's docs,但似乎没有这方面的功能。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:6)

假设您有r1r2的矩形,边缘为.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<righttop<bottom,并计算区域:

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

或者,您可以使用clip()功能。来自您在问题中链接的文档:

  

clip(Rect) - &gt; Rect返回一个被裁剪为的新矩形   完全在参数Rect里面。如果两个矩形没有   重叠开始,返回一个0大小的Rect。