有什么快速的方法来测试两个矩形是否相交?
在互联网上搜索了这个一行字(哇!),但我不明白如何用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
);
}
7条答案
按热度按时间5lhxktic1#
这就是如何将代码转换为JavaScript。请注意,在您的代码中以及本文的代码中有一个错别字,正如注解所建议的那样。具体来说,
r2->right left
应该是r2->right < r1->left
,r2->bottom top
应该是r2->bottom < r1->top
,函数才能正常工作。dnph8jn42#
这假设
top
通常小于bottom
(即y
坐标向下增加)。8mmmxcuj3#
这就是. NETFramework实现Rectangle.Intersect的方式
静态版本:
rvpgvaaj4#
另一个更简单的方法。(假设y轴向下增加)。
上述条件中的4个数字(max和min)也给予了交点。
dgiusagp5#
它有一个Rect类型可以使用。它已经是JavaScript了。
https://dxr.mozilla.org/mozilla-beta/source/toolkit/modules/Geometry.jsm
91zkwejq6#
我使用了混合的方法,在一个大矩形中检测一个较小的矩形。这是一种节点方法,并且使用宽度/高度,但是可以很容易地适应。
vsikbqxv7#
当前的.NET方式很简单