2012-04-06 21 views
0

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

public class section 
{ 
    double leftPoint; 
    double rightPoint; 
} 
+0

什么是“可溶性”? – 11684 2012-04-06 07:36:58

+0

错误........ – 2012-04-06 08:12:58

+0

我怀疑,但在OOP中,您始终可以拥有自定义的类/对象! – 11684 2012-04-06 08:26:52

回答

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()))

+0

每个部分有2个点,每个点有getX(),getY() – 2012-04-06 06:34:32

+0

如果你定义了section类,我将提供一个更接近你所需要的答案。也可以假设两部分的x坐标都是非递减的? – 2012-04-06 06:43:12

+0

看到我的更新,每个点都有getX()和getY()方法 – 2012-04-06 07:08:01

3

矩形类没有方法吗? 如果您创建两个矩形(大小和位置与这些“部分”类似),则可以使用intersection()进行比较,这会返回重叠区域的矩形。

+0

like:'rectangle1.intersection(rectangle2);' – 11684 2012-04-06 07:37:38