我搜索以下问题的名称(以及后来的算法;)):找到从点z0到ze的最短路径,例如路径停留在“道路”上。下图显示了更好的效果。道路由两个点X =(x1,...,xk)和Y =(y1,...,yn)的矢量定义。我们假设问题并不棘手(即路径X,Y不交叉,初始/终点在“道路”上等)。我们想要找到红线(定义为矢量)Z是连接z0和zend并且仅通过道路的最短路径。算法不需要很快。非常感谢任何提示!
更新:在评论之后我改变了图像,因为它显示错误的解决方案......:/
答案 0 :(得分:2)
你绘制它的方式,你的道路是一个单调的多边形(也就是说,当你面向北方时,你左边总是Y,你右边是X)。一旦你对多边形进行了三角测量,就会有一个专门用于在单调三角剖分中找到最短路径的算法,称为“漏斗算法”。
对于单调的三角测量,Mark de Berg的 Computational Geometry 中的描述很棒,但如果不这样做,http://www.cs.ucf.edu/courses/cot5520/Triangul_monotone.ppt看起来相当不错。对于渠道算法,请尝试here。
答案 1 :(得分:-1)
也许这是错误的答案,但我假设x和y坐标是道路的轮廓。如果是这样,为什么不这样做:
如果这是一条道路,你看一下示例中的红线,那么驾驶员有时会在紧急车道或路边行驶,有时会在迎面而来的交通中行驶。