前文:

A* 算法、PathFinding问题中的 allow diagonal 和 don't cross corners,以及 .map文件格式

上篇讲了些关于地图文件 .map 的介绍,本文主要讲下PathFindding中的allow diagonal 和 don't cross corners。



在PathFinding问题中每个点都是一个坐标点,在地图中大致形式如下:

但是在实际地图显示中是不会以点的显示来形式的,地图上每一个坐标点都是用一个小方块来进行表示的,一个完整的地图(带有坐标点的形式)如下:

也就是说每个坐标点是(x, y)的形式,但是在图形显示的时候是使用一个方块的形式,在实际计算的时候我们依然使用坐标点(x, y)的形式,方块只是用于可视化形式,一个坐标点和其具体的显示形式如下:

关于 allow diagonal :

顾名思义,这个选项代表是否可以用对角线的形式连接坐标点,下面给出一个不使用对角线连接的一个路径图示意:

可以看到坐标点之间的连接都是横向和纵向的,没有对角线方向的。

如果使用对角线连接的方式,示意图如下:

重点在于下面的这个对角结构:

假设坐标点之间的间距为1,那么方块的长宽也为1,如果不允许对角线连接的情况下坐标点之间的连接长度只能为1,但是如果允许对角线连接那么相邻坐标点之间的连接距离可以为1也可以为\(\sqrt{2}\)

关于don't cross corners :

在论文:https://webdocs.cs.ualberta.ca/~nathanst/papers/benchmarks.pdf

中可以知道,在允许对角线连接的情况下( allow diagonal ),如果don't cross corners对角线两侧的坐标均不能被占用(不能有障碍物,必须是可穿越的)

下面这个对角线是可以穿越的(allow diagonal 并且 don't cross corners):

但是,如果对角线两侧有障碍物则不能对角线连接,如:

(下面三种形式在allow diagonal 并且 don't cross corners情况下是违法的,是不允许存在的)

(1)

(2)

(3)(这种情况不论是否 allow diagonal 也不论是否 don't cross corners 均是违法的)

也就是说在don't cross corners情况下,即使allow diagonal,那么在上面的三种情况不能进行对角线连接。

在don't cross corners情况下,如果allow diagonal,那么上面的三种情况只能像下面这样处理:

为了更形象的说明在don't cross corners情况下,allow diagonal是不能在相邻坐标点的连接对角线两侧有不可穿越点的,给出下面的App应用的演示:

App地址:https://qiao.github.io/PathFinding.js/visual/

例子:(允许cross corners)

重点在:

上面的情况,如果 allow diagonal 并且 don't cross corners,则有:

A* 算法、PathFinding问题中的 allow diagonal 和 don't cross corners,以及 .map文件格式(续)的更多相关文章

  1. 任意半径局部直方图类算法在PC中快速实现的框架。

    在图像处理中,局部算法一般来说,在很大程度上会获得比全局算法更为好的效果,因为他考虑到了图像领域像素的信息,而很多局部算法可以借助于直方图获得加速.同时,一些常规的算法,比如中值滤波.最大值滤波.最小 ...

  2. 06 - 从Algorithm 算法派生类中删除ExecuteInformation() 和ExecuteData() VTK 6.0 迁移

    在先前的vtk中,如vtkPointSetAlgorithm 等算法派生类中定义了虚方法:ExecuteInformation() 和 ExecuteData().这些方法的定义是为了平稳的从VTK4 ...

  3. 1145: 零起点学算法52——数组中删数II

    1145: 零起点学算法52--数组中删数II Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lldSubmitted: 293 ...

  4. KMP算法 --- 在文本中寻找目标字符串

    KMP算法 --- 在文本中寻找目标字符串 很多时候,为了在大文本中寻找到自己需要的内容,往往需要搜索关键字.这其中就牵涉到字符串匹配的算法,通过接受文本和关键词参数来返回关键词在文本出现的位置.一般 ...

  5. 剑指Offer——算法复杂度中的O(logN)底数是多少

    剑指Offer--算法复杂度中的O(logN)底数是多少 前言 无论是计算机算法概论.还是数据结构书中,关于算法的时间复杂度很多都用包含O(logN)这样的描述,但是却没有明确说logN的底数究竟是多 ...

  6. AES加解密算法在Android中的应用及Android4.2以上版本调用问题

     from://http://blog.csdn.net/xinzheng_wang/article/details/9159969 AES加解密算法在Android中的应用及Android4.2以上 ...

  7. tarjan算法-解决有向图中求强连通分量的利器

    小引 看到这个名词-tarjan,大家首先想到的肯定是又是一个以外国人名字命名的算法.说实话真的是很佩服那些算法大牛们,佩服得简直是五体投地啊.今天就遇到一道与求解有向图中强连通分量的问题,我的思路就 ...

  8. 利用“海底捞算法”在MongoDB中优雅地存储一棵树

    目前常见的树形结构数据库存储方案有以下四种,但是在处理无限深度.海量数据的树结构时,都存在一些问题: 1)Adjacency List(邻接表):每个节点仅记录父节点主键.优点是简单,缺点是访问子树需 ...

  9. 图像处理之优化---任意半径局部直方图类算法在PC中快速实现的框架

    在图像处理中,局部算法一般来说,在很大程度上会获得比全局算法更为好的效果,因为他考虑到了图像领域像素的信息,而很多局部算法可以借助于直方图获得加速.同时,一些常规的算法,比如中值滤波.最大值滤波.最小 ...

  10. 正整数构成的线性表存放在单链表中,编写算法将表中的所有的奇数删除。(C语言)

    /* 正整数构成的线性表存放在单链表中,编写算法将表中的所有的奇数删除 */ #include <stdio.h> #include <stdlib.h> typedef st ...

随机推荐

  1. vm ware 安装 ubuntu server linux

    在:https://ubuntu.com/download/server 中下拉找到"Ubuntu Server 20.04 LTS",下载ISO. 在VM WARE 中,如果鼠标 ...

  2. idea如何快速找到项目中待处理的TODO注释

    idea如何快速找到项目中待处理的TODO注释 idea菜单栏 View -> Tool Windows,可以打开TODO窗口

  3. python批量读取excel csv文件插入mysql数据库

    #python批量读取excel csv文件插入mysql数据库 import os import csv import argparse import pymysql import sys clas ...

  4. Unity 罗技G29接入

    Unity 罗技G29接入 unity g29unity logictech g29g29 Unity 罗技G29接入 一. 使用Unity Standard Assets中的CrossPlatfor ...

  5. springboot使用mail提示没有该类型的bean

    @Autowired private JavaMailSenderImpl javaMailSender; 自动注入时提示没有该类型的Bean. 原因 没有配置邮件发送相关的配置信息. spring: ...

  6. 【基础推导】MPC控制器及其车辆模型详细推导 (附代码链接及详细推导说明)

    0. 参考与前言 Python 代码:github AtsushiSakai/PythonRobotics C++ 代码:github jchengai/gpir/mpc_controller 相关参 ...

  7. 开发一个题库系统App和小程序的心得

    序言 对于一名开发者来说,独自开发一款小程序与App,也许总会有一些疑问: 1. 需要掌握哪些技术? 答:java.vue.及常规Linux命令 2. 需要多少成本? 答:服务器购买,云服务器新人50 ...

  8. FLUTTER 中 Isolate 的一个例子.

    isolate 起因 最近看了一点isolate的东西, 自己写了一个例子. 普通的的 consummer-producer例子是只有前后两端的,实际上,会把前后两端再进行包装. 我这里这个例子,是把 ...

  9. yb课堂 vue里面的状态管理vuex 《四十》

    文档:https://vuex.vuejs.org/zh/ 在store/下index.js import Vue from 'vue' import Vuex from 'vuex' Vue.use ...

  10. SpringBoot配置Jackson处理字段

    常用框架 阿里fastjson,谷歌gson等 JavaBean序列化为json 性能:Jackson>FastJson>Gson>lib 同个结构 Jackson.Fastjson ...