• 改进边的导航


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

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

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

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

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


    20次平滑

    100次平滑

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

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

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

    下面是加入端点约束

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

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





  • 相关阅读:
    C#值类型与引用类型
    Eclipse中JSP生成的类文件存放在哪
    java发起HTTP请求的共用类
    .net汉字转字母
    常用 C#操作字符串方法
    MYSQL整理的语法
    CSS基础篇
    JavaScript基础篇
    jquery操作select(增加,删除,清空)
    Aspose.Words 的使用 Aspose.Total_for_.NET
  • 原文地址:https://www.cnblogs.com/dydx/p/4523053.html
Copyright © 2020-2023  润新知