在我们的系统中,存在一些需求,我们希望将某些源线(精度较低)移动到参考线(精度较高)。以下图片给出了正常的使用案例。红色的是源极线,蓝色的是参考线。
对于这种情况,源行将被部分移动,结果将如绿线所示:
在某些情况下,源代码行需要完全移动。
结果:
当前,我们的解决方案是将源线的起点/终点投影到参考线,反之亦然,然后在源线和参考线上找到投影点。通过这些投影点,我们可以提取源线和参考线的所需部分,然后将它们组合成新的部分。
这在大多数情况下都有效,但是在某些情况下,此方法无效。具体地说,当任何一条线具有“ C”形或起始点非常接近终点时。接下来的两张图片给出了场景。
应用我的算法,我们得到的结果是:
从某种意义上讲,这是可以理解的,因为当前算法只是找到投影点并提取线。
我们期望的是这样的:
因此,我需要更强大的算法来执行此操作,以便它也可以处理像前一种情况一样的特殊情况。我试图将一条线中的每个点投影到另一个点上,并找到最接近投影线的头端/终点的两个投影点,但是没有运气。我仍然可以找到给出意外结果的案例。
有人遇到过类似的问题吗?如果有一个软件或库可以完成类似的工作,那也很好。任何答案将不胜感激。