2017-04-03 28 views
-4

我有一個簡單的Point對象交叉口的最後幾行

public class Point { 
private double x; 
private double y; 
} 

和簡單的線條對象

public class Line { 
private Point start; 
private Point end; 
} 

現在我需要找到兩條線的交叉點,這是不是因爲線那麼簡單有起點和終點....

public boolean isIntersecting(Line other) { 
.... 
} 

public Point intersectionWith(Line other) { 
..... 

任何意識?

+5

這感覺就像它幾乎完全是一個數學問題 - 沒有跡象表明編程是這裏的問題。在互聯網上有*負載*的網頁關於發現線是否相交的數學。你有看過嗎?你遇到了什麼問題?目前,這個問題至少*看起來像你沒有做足夠多的研究。 –

+1

瞭解算法以檢查兩條線段是否相交併嘗試通過代碼實現它。如果您在實施過程中遇到任何問題,您可以在此處詢問。 – niyasc

+0

https://www.topcoder.com/community/data-science/data-science-tutorials/geometry-concepts-line-intersection-and-its-applications/ –

回答

0

首先,我認爲你的意思是線段,線條沒有開始和結束。 然後, 將起點和終點取爲y = kx + b; 你會得到(K1,B1)和(K2,B2),

如果K1 == k2和B1!= B2 兩條線是平行的

如果K1 == k2和B1 B2 == 兩行相同的行

如果K1!= K2 使用Y = K1X + b1和Y = k2x + B2,以獲得交叉點(X,Y)

最後比較的點(x,y)的用開始點和結束點,看看是否有交集。