2017-10-12 81 views
0

我有一個存儲爲兩個基點的矩形列表等[[5,10],[10,15]],我知道它們都與從一點到另一點的線相交。如何找到哪個矩形首先與一條線相交?哪個矩形線首先點擊

+0

線條起點'x'座標與下'x'座標之間的絕對差值最小的那個。 – Kasramvd

+1

種類,但如果線條向後或向上怎麼辦 –

+0

這一切都取決於您首先指的是什麼以及座標系的中心是什麼,除了線條沒有方向。此外,如果兩個矩形的差別相同,例如垂直排列矩形並垂直排列,則可以檢查「y」之間的差異。 – Kasramvd

回答

1

線(兩點定義)具有參數方程

X = X0 + t * (X1 - X0) 
Y = Y0 + t * (Y1 - Y0) 

替代左或右(視線方向)的矩形邊緣座標的第一方程,頂或右座標中 - 在第二個等式,找到提供與邊緣相交的參數t的最小值。

例如,從第一個等式得到矩形左邊緣的tl值。查找Y爲這個tl從第二個方程的值,並檢查這個Y是否在top..bottom範圍內。

您是否有關於矩形位置和大小的其他限制/信息?矩形是否設置爲常量,並使用多行?或者線是不變的,並且有一些矩形?

+0

即將寫。請注意,如果'X1 - X0'或'Y1 - Y0'爲零或非常接近零(垂直和水平線),則需要小心。除此之外,我認爲如果矩形不重疊,那麼最靠近第一個點的角落就是贏家,但我不完全確定。雖然這些是軸對齊的矩形,但找到交點可能會更快。 – jdehesa