考虑到成本,我试图在多边形内找到一条路径。
在我的具体情况中,我的角色应该只是相对笔直的,即移动到北,东,南或西不应该相差几度。
理想情况下,我会指定一个随偏差而增加的成本。我假设这是一个图论相关的问题,但我不知道如何在多边形中做到这一点......
插图中的红色虚线路径是常规算法产生的;绿色是我想要的。 编辑:我搞砸了一下图片;澄清:红色路径是多边形内部最短的路径,我希望绿色路径是角度约束条件下可能的最短路径。
(澄清一下,如果我的多边形看起来像 (1)
,我希望路径类似于 (2)
,不仅仅是点之间的直线)
(1) ,-------------------+ (2) ,-------------------+
/ (B) | / (B) |
/ | / / |
+--+ | -> +--+ / |
| +-+ | / +-+
| (A) | | (A)-------------+ |
+-----------------------+ +-----------------------+
答案 0 :(得分:1)
这真的是一个评论,但我不能评论,因为它需要50个声誉...... Otoh,我不认为这个问题有令人满意的答案,因为它没有明确定义。但是+1有趣的问题: - )
给出红色虚线的算法从路径的起点和终点之间的直线开始(不完全在多边形内部。)然后沿着多边形的边缘滑动直到你到达角落并采取这是你的新起点。 (请注意,您绘制的红色虚线实际上不是最短路径。)现在您的绿线基本上是红线,您更换了不喜欢的部分(错误的角度),路径较长但由于某种原因更好(很好的角度。)这也是为你提供下面例子的“正确”答案的原因。从(A)到(B)的直线开始,这是最短的路径,位于多边形内。现在用更有利的角度替换这条线。 (这可能会迫使你一般多转几次......)
只是一些想法。
答案 1 :(得分:1)
运行Rapidly exploring random tree algorithm但是将探测方向限制在平行于轴的几个方向上,并选择较大的增量距离以保持较低的转弯次数。基本上可以根据自己的意愿添加任何启发式方法。
Rapidly-Exploring Random Trees: A New Tool for Path Planning是关于快速探索随机树的开创性论文。
答案 2 :(得分:1)
我会在这里添加另一个答案,因为它与我的另一个答案截然不同。从常规路径寻找算法的结果开始,运行随机优化以最大化适应度函数,该函数描述了相对平直度"通过添加顶点,移动顶点和删除路径中的顶点,以及保持路径有效的路径(以及您希望的短路和其他指标)。
常见的随机优化方法包括Simulated Annealing。