快速矩形到矩形相交

测试2个矩形是否相交的快速方法是什么?


在Internet上进行了搜索,找到了这种单行代码(WOOT!),但我不知道如何用Javascript编写它,它似乎是用C ++的古老形式编写的。

struct

{

LONG left;

LONG top;

LONG right;

LONG bottom;

} RECT;

bool IntersectRect(const RECT * r1, const RECT * r2)

{

return ! ( r2->left > r1->right

|| r2->right < r1->left

|| r2->top > r1->bottom

|| r2->bottom < r1->top

);

}

回答:

这就是将代码转换为JavaScript的方式。请注意,正如注释所建议的那样,您的代码和本文的代码中都有一个错字。该功能r2->right

left应该r2->right < r1->left并且r2->bottom top应该具体r2->bottom < r1->top起作用。

function intersectRect(r1, r2) {

return !(r2.left > r1.right ||

r2.right < r1.left ||

r2.top > r1.bottom ||

r2.bottom < r1.top);

}

测试用例:

var rectA = {

left: 10,

top: 10,

right: 30,

bottom: 30

};

var rectB = {

left: 20,

top: 20,

right: 50,

bottom: 50

};

var rectC = {

left: 70,

top: 70,

right: 90,

bottom: 90

};

intersectRect(rectA, rectB); // returns true

intersectRect(rectA, rectC); // returns false

以上是 快速矩形到矩形相交 的全部内容, 来源链接: utcz.com/qa/399316.html

回到顶部