zoukankan      html  css  js  c++  java
  • 三点共线 之 优化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]);
  • 相关阅读:
    uva 10900
    uva 11181
    Codeforces Round #256 (Div. 2) Multiplication Table
    UVALive 3977
    LA 4384
    Linear Regression
    Hadoop InputFormat浅析
    codeforces 432D Prefixes and Suffixes
    php学习小记2 类与对象
    php学习小记1
  • 原文地址:https://www.cnblogs.com/big-zhou/p/10721491.html
Copyright © 2011-2022 走看看