Javascript CGRectUnion的Canvas等价物

Javascript CGRectUnion的Canvas等价物,javascript,canvas,Javascript,Canvas,我在寻找与CGRectUnion的CoreGraphics函数等价的javascript。我找到了isPointInPath。我在读关于clip路径的书,所以觉得这很有可能 这个函数的作用是取两个矩形 function CGRectUnion(rect1, rect2) { } 每个rect对象有4个键,w、h、x和y。x和y是矩形的左上角坐标,w和h是宽度和高度 如果rect2的任何部分都不与rect1重叠,则函数返回false。如果rect2与rect1重叠,则返回两个矩形之间公共区域的

我在寻找与
CGRectUnion
的CoreGraphics函数等价的javascript。我找到了
isPointInPath
。我在读关于
clip
路径的书,所以觉得这很有可能

这个函数的作用是取两个矩形

function CGRectUnion(rect1, rect2) {

}
每个rect对象有4个键,
w
h
x
y
。x和y是矩形的左上角坐标,w和h是宽度和高度

如果rect2的任何部分都不与rect1重叠,则函数返回false。如果rect2与rect1重叠,则返回两个矩形之间公共区域的矩形对象

javascript中是否有这样的内置函数,尤其是与画布相关的区域


谢谢

我没有听说过canvas有这样的函数,但是它是一个非常简单的函数,所以您可以自己实现它,如下所示:

function CGRectUnion(r1, r2) {
    var rightEdge1 = r1.x+r1.w;
    var rightEdge2 = r2.x+r2.w;
    var bottomEdge1 = r1.y+r1.h;
    var bottomEdge2 = r2.y+r2.h;

    // first check if the rectangles overlap at all, if not return false
    if(r1.x > rightEdge2 || rightEdge1 < r2.x || r1.y > bottomEdge2 || bottomEdge1 < r2.y) {
        return false;
    }

    // return a new rectangle for the intersection
    return {
        x: Math.max(r1.x, r2.x),
        y: Math.max(r1.y, r2.y),
        w: Math.min(rightEdge1, rightEdge2) - Math.max(r1.x, r2.x),
        h: Math.min(bottomEdge1, bottomEdge2) - Math.max(r1.y, r2.y)
    };
}
函数CGRectUnion(r1,r2){ 右边缘变量1=r1.x+r1.w; var rightEdge2=r2.x+r2.w; var bottomEdge1=r1.y+r1.h; var bottomEdge2=r2.y+r2.h; //首先检查矩形是否重叠,如果没有,返回false 如果(r1.x>righedge2 | | righedge1bottomEdge2 | | bottomEdge1 可以在此处找到演示:

A.不,此功能没有内置功能。真的吗?@Amit我觉得这是一种可能性,因为我发现函数
isPointInPath
。使用位图时,这个rect函数似乎是一个常见的操作。我在读关于
clip
路径的书,所以我认为这是很有可能的。这是因为其中至少有一些复杂的逻辑。路径可以是一个复杂的形状,要知道一个点是否在内部并不困难。你所问的是更琐碎、更同质的问题。两个矩形的交集是一个简单的数学任务,你最多只需要几行代码就可以处理。对不起,这是CoreGraphis库和我使用过的其他位图库中的内置函数,我认为这是可能的。例如:非常感谢@Sebastian我在这里的链接中中了头奖,它都是javascript,它在jsm文件中,所以我把它拿出来: