我想稍有變化添加到NEX軟件的答案。如果你想要得到的值存儲在源矩形的一個這種人會甚至工作:
public static boolean intersect(Rectangle r1, Rectangle r2, Rectangle intersection) {
if (!r1.overlaps(r2)) {
return false;
}
float x = Math.max(r1.x, r2.x);
float y = Math.max(r1.y, r2.y);
float width = Math.min(r1.x + r1.width, r2.x + r2.width) - x;
float height = Math.min(r1.y + r1.height, r2.y + r2.height) - y;
intersection.set(x, y, width, height);
return true;
}
下面是一個例子usege:
Rectangle r1 = new Rectangle();
Rectangle r2 = new Rectangle();
// ...
intersect(r1, r2, r1);
好像我可以使用這個,謝謝! – Algorithman
這實際上正是libgdx庫所做的。它爲相交返回true或false,但也設置提供的第三個矩形作爲矩形的交集區域。不知道在OP提出問題之後是否提供了功能,但是將其放在此處供其他人查找。 – Aterxerxes
是的,我在提供這個答案後不久就向libgdx添加了相同的內容。 –