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

bzz*_*zzr 1 python pygame rect breakout

我正在研究一个突破性的克隆,我一直试图弄清楚如何获得两个碰撞反射的交叉矩形因此我可以测量球在x和y轴上进入块的深度,并决定哪个部分是速度我会逆转.

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

球与块碰撞

但是,如果我有交叉矩形而不是我不必担心如果球从左/右顶部/底部撞击块(因为我将只分别反转x和y轴),因此节省了我很多打字.

我看过Pygame的文档,但似乎它没有这个功能.我该如何解决这个问题?

Flo*_*ris 6

假设你有矩形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);
Run Code Online (Sandbox Code Playgroud)

(通常的惯例是坐标从上到下,从左到右增加).最后,检查left<righttop<bottom,并计算面积:

Area = (right - left) * (top - bottom);
Run Code Online (Sandbox Code Playgroud)

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

clip(Rect) - > Rect返回一个新的矩形,该矩形被裁剪为完全位于参数Rect内.如果两个矩形不重叠,则返回一个0大小的Rect.

  • 由你决定.如果其他人搜索"矩形交叉pygame",他们会发现很多布尔测试的命中 - 很少有"重叠区域".也许这个问题最终会成为清单......你很难找到答案 - 其他人也是如此. (2认同)