我有2個部分,每個部分包含2個點,每個點有X和Y. 找到這兩個部分之間的重疊的最佳方法是什麼? (僅在此處與X相關)Alogritm找到2個部分之間的重疊
public class section
{
double leftPoint;
double rightPoint;
}
我有2個部分,每個部分包含2個點,每個點有X和Y. 找到這兩個部分之間的重疊的最佳方法是什麼? (僅在此處與X相關)Alogritm找到2個部分之間的重疊
public class section
{
double leftPoint;
double rightPoint;
}
下面是示例代碼,向您展示如何執行此操作。我假設這兩個部分是(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()))
每個部分有2個點,每個點有getX(),getY() – 2012-04-06 06:34:32
如果你定義了section類,我將提供一個更接近你所需要的答案。也可以假設兩部分的x座標都是非遞減的? – 2012-04-06 06:43:12
看到我的更新,每個點都有getX()和getY()方法 – 2012-04-06 07:08:01
矩形類沒有方法嗎? 如果您創建兩個矩形(大小和位置與這些「部分」類似),則可以使用intersection()
進行比較,這會返回重疊區域的矩形。
like:'rectangle1.intersection(rectangle2);' – 11684 2012-04-06 07:37:38
什麼是「可溶性」? – 11684 2012-04-06 07:36:58
錯誤........ – 2012-04-06 08:12:58
我懷疑,但在OOP中,您始終可以擁有自定義的類/對象! – 11684 2012-04-06 08:26:52