改进边的导航

现时的做法是对寻路结果进行平滑,每个结构不知道其他寻路结果的存在,因此无法在结果曲线的平滑度和结果曲线的重合度上取得平滑。要么结果曲线很平滑,但曲线十分分散;要么结果曲线重合度高,但曲线本身不平滑。

改进的方法有两种。
一种是在所有路线完成导引后,统一对其经过的边上的控制点进行平滑。
这种方法比较简单,而且在路线较少时计算量较低。
缺点是一次要处理一批路线,不同批处理的路线得到的结果不同。可以用一个开关解决这种情况。例如第一次处理路线时打开开关,路线会修改控制点的位置,随后的处理关闭开关,也就不修改控制点。

另一种是事先按照某个规则,对边上的控制点进行平滑。边导引的过程仅仅是跟随已有的平滑过后的控制点。

第一种方法比较简单,效果也比较有保证,因此先采用第一种方法。

以下是实现结果。
在边原来绑定点权重为0.2的情况下,
无平滑


20次平滑

100次平滑

可见20 次平滑后效果与100次差不多了。

20次平滑,但绑定点权重改为0.02

可见环绕中间类的路线比较平滑,但部分地方两个方向的路线开始重合,说明约束点的作用不够大。

下面是加入端点约束

加入端点约束之后,靠近边界的地方有所好转,但其余地方差不多。

由半边改为边,然后加入样条曲线之后,效果有所改善。





原文地址:https://www.cnblogs.com/dydx/p/4523053.html