簡體   English   中英

增強幾何:使用開放間隔的交集

[英]Boost geometry : intersection using an open interval

我有一條折線和一條線段。 線段的端點之一始終也是折線的點。

示例:線段:(1,2),(3,3)折線:(3,3),(10,10),(15,30)

我想使用升壓幾何來確定線段和折線是否有交點。 但是,它們在連接點相交是可以的。 在這種情況下,(3,3)。

在這種情況下, boost::geometry::intersects將始終返回true 我想對公共點做一個例外,但是如果在其他任何點有交集,仍然讓它返回true 有聰明的方法可以解決這個問題嗎? 還是我必須使用boost::geometry::intersection並遍歷結果?

如果我對您的理解正確,則要檢查線段是否在其連接點以外的點與折線相交。

因此,您只需要檢查沒有與紅色段共享端點的段(請參見圖片)。 您可以跳過那些具有相同端點的紅色段的用戶,或者您可能希望以不同的方式處理它們,例如,檢查整個段是否重合。

我很長時間沒有使用c ++,所以我寫了偽代碼:

foreach (segment in polyline) {
    if (
        segment.A != redSegment.A &&
        segment.A != redSegment.B &&
        segment.B != redSegment.A &&
        segment.B != redSegment.B &&
        intersect (segment, redSegment)
    ) {
        return true;
    }
}
return false;

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM