如何檢測線段(方向d和點p的-d)和線段(點p1和點p2之間)是否在2D中相交?如果他們這樣做,我怎麼能得到他們的交點。線段和線段交點
有很多示例如何檢測兩條線段是否相交,但這應該更簡單。
我發現了這一點,但我不明白什麼是邊運營商: http://www.loria.fr/~lazard//ARC-Visi3D/Pant-project/files/Line_Segment_Line.html
如何檢測線段(方向d和點p的-d)和線段(點p1和點p2之間)是否在2D中相交?如果他們這樣做,我怎麼能得到他們的交點。線段和線段交點
有很多示例如何檢測兩條線段是否相交,但這應該更簡單。
我發現了這一點,但我不明白什麼是邊運營商: http://www.loria.fr/~lazard//ARC-Visi3D/Pant-project/files/Line_Segment_Line.html
如果這是一個2D的任務(行和段位於同一平面,並且它們通過2維指定座標),這很容易。
構造一個與d(線的方向)垂直的向量。計算點積d *(p1-p)和d *(p2-p)。如果它們具有相同的符號,則不存在相交。如果他們有相反的標誌,就有一個交叉點。通過一點思考,你可以計算出如何用p,p1-p和p2-p來計算交點的位置。
爲什麼你需要構造一個與d正常的向量?你在後面的解釋中似乎沒有用... – 2017-07-05 09:18:03
我認爲你在隨後的點產品中稱之爲「d」實際上是正常方向。 – 2017-07-05 09:26:44
您可以簡單地檢查兩條線(您的線和一條線段線)是否相交併評估相交點。第1行:(x,y)(t)= p + t * d; 第2行:(X,Y)(T)= P1 + K *(P2 - P1)
在交點: P + T * d = P1 + K *(P2 - P1) - 兩個方程(每x和每y)
從這些方程中,您可以簡單地找到k和t參數。如果爲0 <ķ< 1交點是在(P1,P2)
如果知道K或T優可以簡單地計算從(X,Y)的交叉點(T)= P + T * d或 (X,Y)(T)= P1 + K *(P2 - P1)
讓p(x,y)
和a
其方向上的直線方程是D = a.x+b
其中b = y - a.x
讓p1(x1,y1)
和p2(x2,y2)
一個段,其方程式爲D' = a'.x+b'
對於中的任何 其中a' = (y2-y1)/(x2-x1)
和b' = y2 - a'.x2 = y1 - a'.x1
你有一個交叉點,如果有[x1;x2]
之間的x
爲此D = D'
因此如果X = (b'-b)/(a-a')
屬於[x1;x2]
然後Y = a.X+b = a'.X+b
給你交點P(X,Y)
例如:
let p(255,255)
a = 1
=>b = 0
讓p1(60,179)
和p2(168,54)
=>a' = -125/108
=>b' = 24596/99
=>X = (24596/99 - 0)/(1+125/108) = 115,1587983
=>Y = (24596/99 - 0)/(1+125/108) = 115,1587983
X
是60和168之間,以便有一個相交離子點在P(X,Y)
請將您的表達式發佈到行和段中,以便我們可以對齊答案。 TNX! – 2010-10-27 06:50:32
這是2D還是3D任務? – user434507 2010-10-27 07:28:13