【问题标题】:Calculate overlap between two rectangles on x/y grid?计算 x/y 网格上两个矩形之间的重叠?
【发布时间】:2011-01-08 19:17:25
【问题描述】:

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

在上一个问题中,我询问了一种计算此网格中两点之间距离的方法。原来是欧几里得距离:

sqrt(min(|x1 - x2|, gridwidth - |x1 - x2|)^2 + min(|y1 - y2|, gridheight - |y1-y2|)^2)

计算两个矩形(由点 (x,y)、宽度和高度定义)在此网格中是否重叠的良好数学方法是什么?

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

【问题讨论】:

  • 我可以告诉您如何在 3D 空间中执行此操作...它也可以在 2D 中使用,但我不知道您是否可以接受。基本上,这个想法是查看矩形所在的 2 个平面。找到这些平面的交点,看看使平面相交的线是否与两个矩形相交...想听数学吗?
  • 我对数学很感兴趣。我明白你在说什么,我可以推断出数学,但我不能产生它...... 2d 方法对 CPU 功率的消耗会更少吗?
  • CPU 功率?!您可以在 Casio Watch CPU 上计算。 xD 这真的很简单的数学......让我测试一下我的想法。你是用类似 C 的 OO 语言来制作它的吗?
  • 当你说“Rectangle-1 ([x=0,y=0], w=20, h=20) 和 Rectangle-2 ([x=495, y=0], w=10, h=10) 应该有重叠。”如果一个在原点,另一个在 x 轴上的 495 处,它们不会重叠。
  • 其实,这一切都在这里得到解答:stackoverflow.com/questions/115426/…

标签: math grid coordinates overlap euclidean-distance


【解决方案1】:

首先,计算每个矩形的 x 和 y 范围 (因为你有一个圆环几何,所以它是 mod gridsize)。

所以,给定你的 Rectangle-1,计算:

x1 = x = 0, x2 = x + w = 20
y1 = y = 0, y2 = y + h = 20

对于 Rectangle-2 也是如此:

x3 = 495, x4 = 505 mod 500 = 5
y3 = 0,   y4 = 10

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

Reactangle-1: x-regions: (0, 20)
              y-regions: (0, 20)

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

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

【讨论】:

    猜你喜欢
    • 2015-01-25
    • 2023-03-18
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    • 2017-01-15
    相关资源
    最近更新 更多