三点共线 之 优化A*路径

做A*寻路出来的 路径步数比较多,很多步数都是 一条直线,那么我们只要记录 头尾就可。

如图处理前后效果

三点共线  之  优化A*路径

三点共线  之  优化A*路径

网上as3 js都有相应的算法,c#好像没有,于是我 来补充一下。

假设 List<Vector2> path  记录了   a* 的路径。

定义 List<Vector2> newpath  准备记录 新的步数路径

定义 Vector2 v  记录 新的步数坐标

        List<Vector2> newpath = new List<Vector2>();
        newpath.Add(path[0]);
        Vector2 v = new Vector2();
        //去掉同一条线上的点。
        for (int i = 1; i < path.Count - 2; i++)
        {
            if ((path[i + 1].x - path[i].x) == (path[i + 2].x - path[i + 1].x) && (path[i + 1].y - path[i].y) == (path[i + 2].y - path[i + 1].y))
            {
            }
            else
            {
                v = path[i + 1];
                newpath.Add(v);
            }
        }
        newpath.Add(path[path.Count - 1]);

 

上一篇:php遍历目录下的所有文件夹


下一篇:C/C++ 递归与结束递归