我有 2 个部分,每个部分包含 2 个点,每个点都有 X 和 Y。找到这 2 个部分之间重叠的最佳方法是什么?(仅在此处相关的 X 上)
public class section
{
double leftPoint;
double rightPoint;
}
我有 2 个部分,每个部分包含 2 个点,每个点都有 X 和 Y。找到这 2 个部分之间重叠的最佳方法是什么?(仅在此处相关的 X 上)
public class section
{
double leftPoint;
double rightPoint;
}
矩形类没有方法吗?如果您创建两个矩形(大小和定位就像那些“部分”),您可以使用intersection()
将返回重叠区域的矩形来比较它们。
这是向您展示如何执行此操作的示例代码。我假设这两个部分是 (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()))