繁体   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