0

我有 2 个部分,每个部分包含 2 个点,每个点都有 X 和 Y。找到这 2 个部分之间重叠的最佳方法是什么?(仅在此处相关的 X 上)

public class section
{
   double leftPoint;
   double rightPoint;
}
4

2 回答 2

3

矩形类没有方法吗?如果您创建两个矩形(大小和定位就像那些“部分”),您可以使用intersection()将返回重叠区域的矩形来比较它们。

于 2012-04-06T06:29:17.223 回答
0

这是向您展示如何执行此操作的示例代码。我假设这两个部分是 (a_from, a_to) 和 (b_from, b_to) 并将结果部分设置为 (res_from, res_to)。此外,我只与 x 轴上的间隔相交,因为这似乎是您想要的。这个想法是结果从两个开始中的较晚者开始,并在两个结束中的较早者结束。

Point a_from, a_to;
Point b_from, b_to;
Point res_from =  new Point();
Point res_to =  new Point();
res_from.SetX(Math.max(a_from.getX(), b_from.getX()));
res_to.SetX(Math.min(a_to.getX(), b_to.getX()));

注意如果 res_to.x < res_from.x 根本没有交集。

同样在这里,我假设 a_from.x <= a_to.x 和 b_from.x <= b_to.x 这可能并不总是正确的。如果不是,则必须将 res_from.x 计算为Math.max(Math.min(a_from.getX(), a_to.getX()), Math.min(b_from.getX(), b_to.getX()))

于 2012-04-06T06:24:43.013 回答