c 怎麼獲知兩個線段是否相交

2021-08-20 07:03:44 字數 1120 閱讀 9428

這是幾何問題,在gis裡經常會遇到的問題。問題的來由是由於本人在開發室內定位引擎系統。

可以回到數學知識自己解決這個問題,不過有專業的庫解決這些幾何問題。本人搜到兩個辦法:

第乙個辦法通過nuget新增乙個叫nettopologysuite的庫。

直接上**舉例子:

using nettopologysuite.geometries;}}

linesegment代表線段類,它有兩個函式,intersection()和lineintersection(),前者是求線段的交點,有交點則返回交點的值,如果無交點則返回null;後者是線條(兩個線段無線延長)的交點,同樣的無交點則返回null。

另外一種方法:通過nuget新增乙個叫mathnet.spatial的庫。

上**舉例:

using system;

using system.collections.generic;

using mathnet.spatial.euclidean;

return intersecpoint;}}

class program

;//point2d p = new point2d(3,5);

//bool bin1 = polygon2d.ispointinpolygon(p, new polygon2d(points));

//polygon2d p2d = new polygon2d(points);

//bool bin2 = p2d.enclosespoint(p);}}

}

mathnet.spatial貌似沒有計算線段交點的,但是有計算線條(線段無線延長)的交點函式intersectwith(),因此本人擴充套件了乙個新的函式intersectwithsegmentline()函式來計算線段的交點。

(上面**中注釋的是:mathnet.spatial自帶的可以判斷乙個點是否在某個多邊形內部的例子,有兩個函式:ispointinpolygon和enclosespoint())

不好意思上面的這個**有誤!

判斷兩個線段是否相交

html xmlns lang en charset utf 8 判斷兩個線段是否相交問題title rel stylesheet href css reset.css rel stylesheet href css style.css head class wrap 判斷兩個線段是否相交h2 br...

判斷兩個線段相交

我們首先將問題分成如下幾個小問題討論 首先要解決的第乙個問題是判斷直線是否平行,我們首先假設四個點的座標為 前兩個點為a x1,y1 b x2,y2 後兩個點為 c x3,y3 d x4,y4 求出兩個直線的方向向量e1 x 1 x2 y1 y2 e2 x 3 x4 y3 y4 通過e 1 e2 求...

兩個矩形是否相交

假定矩形是用一對點表達的 minx,miny maxx,maxy 那麼兩個矩形rect1,rect2 相交的結果一定是個矩形,構成這個相交矩形rect的點對座標是 minx max minx1,minx2 miny max miny1,miny2 maxx min maxx1,maxx2 maxy ...