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