Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 计算x/y网格上两个矩形之间的重叠?_Math_Grid_Coordinates_Overlap_Euclidean Distance - Fatal编程技术网

Math 计算x/y网格上两个矩形之间的重叠?

Math 计算x/y网格上两个矩形之间的重叠?,math,grid,coordinates,overlap,euclidean-distance,Math,Grid,Coordinates,Overlap,Euclidean Distance,我需要计算两个矩形在特殊x/y网格上的重叠(数量或是/否)。网格为500x500,但边和角连接(连续)。因此,499之后的下一个点再次变为0 在前面的一个问题中,我问了一种计算网格中两点之间距离的方法。这就是欧几里德距离: sqrt(min(|x1 - x2|, gridwidth - |x1 - x2|)^2 + min(|y1 - y2|, gridheight - |y1-y2|)^2) 如果两个矩形(由一个点(x,y)、宽度和高度定义)在此网格中重叠,那么用什么好的数学方法计算呢? 矩

我需要计算两个矩形在特殊x/y网格上的重叠(数量或是/否)。网格为500x500,但边和角连接(连续)。因此,499之后的下一个点再次变为0

在前面的一个问题中,我问了一种计算网格中两点之间距离的方法。这就是欧几里德距离:

sqrt(min(|x1 - x2|, gridwidth - |x1 - x2|)^2 + min(|y1 - y2|, gridheight - |y1-y2|)^2)
如果两个矩形(由一个点(x,y)、宽度和高度定义)在此网格中重叠,那么用什么好的数学方法计算呢?


矩形-1(
[x=0,y=0],w=20,h=20
)和矩形-2(
[x=495,y=0],w=10,h=10
)应该有重叠。重叠矩形(不是真正需要的,但是)应该是(
[x=0,y=0],w=5,h=10

首先,计算每个矩形的x和y范围 (因为您有一个圆环几何体,所以请按mod gridsize进行操作)

因此,给定矩形-1,计算:

矩形-2相同:

为每个矩形创建x和y“区域”:

如果两个矩形之间的任何(两个)x和y区域具有非空交点,则矩形重叠。
这里,矩形1的(0,20)x区域和矩形2的(0,5)x区域有一个非空交点,(0,20)和(0,10)y区域也有一个非空交点。

我可以告诉你如何在三维空间中进行此操作。。。它也将在二维工作,但我不知道它是否是你可以接受的。基本上,这个想法是看矩形所在的两个平面。找到这些平面的交点,然后查看使平面相交的直线是否与两个矩形相交。。。想听数学吗?我对数学很感兴趣。我明白你的意思,我可以推导出数学公式,但我不能得出它。。。2d方法对CPU功率的消耗会减少吗?CPU功率?!你可以在卡西欧手表的CPU上计算。xD这是非常简单的数学。。。让我测试一下我心中的想法。你是用一种类似C的OO语言生成的吗?当你说“矩形-1([x=0,y=0],w=20,h=20)和矩形-2([x=495,y=0],w=10,h=10)应该有重叠”时,我有点困惑。如果一个在原点,另一个在x轴495处,它们不会重叠。实际上,所有这些都在这里得到了回答:
x1 = x = 0, x2 = x + w = 20
y1 = y = 0, y2 = y + h = 20
x3 = 495, x4 = 505 mod 500 = 5
y3 = 0,   y4 = 10
Reactangle-1: x-regions: (0, 20)
              y-regions: (0, 20)

Rectangle-2:  x-regions: (495, 500), (0, 5)
              y-regions: (0, 10)