我需要一个好的(健壮的)算法,通过线段将多边形分成两组(左/右)。我的多边形表示只是一个整数坐标列表(按顺时针顺序排列,不相交),线段由起点和终点表示。线段始终从多边形外部开始和结束,即与多边形相交次数为偶数。
以下是示例:
输出应该是两组(顺时针旅行):
左侧:HABCH、FGDEF
右侧:HCDGH、BAB、FEF
我可以通过迭代多边形并检查多边形线段是否穿过线来识别A-H点,注意要考虑边界情况。我也可以确定每个多线属于哪一侧。但是,我无法决定如何将这些线段连接在一起。
在您建议通用剪辑库之前:我正在使用boost polygon,它非常擅长剪辑多边形,但我没有找到任何可以让您剪辑多边形与线段,并且通常不可能将线段转换为可以裁剪的多边形的库。
编辑:我错过了FEF和多边形可以有部分位于线段两侧的事实。
以下是示例:
输出应该是两组(顺时针旅行):
左侧:HABCH、FGDEF
右侧:HCDGH、BAB、FEF
我可以通过迭代多边形并检查多边形线段是否穿过线来识别A-H点,注意要考虑边界情况。我也可以确定每个多线属于哪一侧。但是,我无法决定如何将这些线段连接在一起。
在您建议通用剪辑库之前:我正在使用boost polygon,它非常擅长剪辑多边形,但我没有找到任何可以让您剪辑多边形与线段,并且通常不可能将线段转换为可以裁剪的多边形的库。
编辑:我错过了FEF和多边形可以有部分位于线段两侧的事实。