改进边的导航
现时的做法是对寻路结果进行平滑,每个结构不知道其他寻路结果的存在,因此无法在结果曲线的平滑度和结果曲线的重合度上取得平滑。要么结果曲线很平滑,但曲线十分分散;要么结果曲线重合度高,但曲线本身不平滑。
改进的方法有两种。
一种是在所有路线完成导引后,统一对其经过的边上的控制点进行平滑。
这种方法比较简单,而且在路线较少时计算量较低。
缺点是一次要处理一批路线,不同批处理的路线得到的结果不同。可以用一个开关解决这种情况。例如第一次处理路线时打开开关,路线会修改控制点的位置,随后的处理关闭开关,也就不修改控制点。
另一种是事先按照某个规则,对边上的控制点进行平滑。边导引的过程仅仅是跟随已有的平滑过后的控制点。
第一种方法比较简单,效果也比较有保证,因此先采用第一种方法。
以下是实现结果。
在边原来绑定点权重为0.2的情况下,
无平滑
20次平滑
100次平滑
可见20 次平滑后效果与100次差不多了。
20次平滑,但绑定点权重改为0.02
可见环绕中间类的路线比较平滑,但部分地方两个方向的路线开始重合,说明约束点的作用不够大。
下面是加入端点约束
加入端点约束之后,靠近边界的地方有所好转,但其余地方差不多。
由半边改为边,然后加入样条曲线之后,效果有所改善。