[英]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.