【发布时间】: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