2012-04-06 47 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