A* 算法、PathFinding问题中的 allow diagonal 和 don't cross corners,以及 .map文件格式(续)
前文:
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文件格式(续)的更多相关文章
- 任意半径局部直方图类算法在PC中快速实现的框架。
在图像处理中,局部算法一般来说,在很大程度上会获得比全局算法更为好的效果,因为他考虑到了图像领域像素的信息,而很多局部算法可以借助于直方图获得加速.同时,一些常规的算法,比如中值滤波.最大值滤波.最小 ...
- 06 - 从Algorithm 算法派生类中删除ExecuteInformation() 和ExecuteData() VTK 6.0 迁移
在先前的vtk中,如vtkPointSetAlgorithm 等算法派生类中定义了虚方法:ExecuteInformation() 和 ExecuteData().这些方法的定义是为了平稳的从VTK4 ...
- 1145: 零起点学算法52——数组中删数II
1145: 零起点学算法52--数组中删数II Time Limit: 1 Sec Memory Limit: 64 MB 64bit IO Format: %lldSubmitted: 293 ...
- KMP算法 --- 在文本中寻找目标字符串
KMP算法 --- 在文本中寻找目标字符串 很多时候,为了在大文本中寻找到自己需要的内容,往往需要搜索关键字.这其中就牵涉到字符串匹配的算法,通过接受文本和关键词参数来返回关键词在文本出现的位置.一般 ...
- 剑指Offer——算法复杂度中的O(logN)底数是多少
剑指Offer--算法复杂度中的O(logN)底数是多少 前言 无论是计算机算法概论.还是数据结构书中,关于算法的时间复杂度很多都用包含O(logN)这样的描述,但是却没有明确说logN的底数究竟是多 ...
- AES加解密算法在Android中的应用及Android4.2以上版本调用问题
from://http://blog.csdn.net/xinzheng_wang/article/details/9159969 AES加解密算法在Android中的应用及Android4.2以上 ...
- tarjan算法-解决有向图中求强连通分量的利器
小引 看到这个名词-tarjan,大家首先想到的肯定是又是一个以外国人名字命名的算法.说实话真的是很佩服那些算法大牛们,佩服得简直是五体投地啊.今天就遇到一道与求解有向图中强连通分量的问题,我的思路就 ...
- 利用“海底捞算法”在MongoDB中优雅地存储一棵树
目前常见的树形结构数据库存储方案有以下四种,但是在处理无限深度.海量数据的树结构时,都存在一些问题: 1)Adjacency List(邻接表):每个节点仅记录父节点主键.优点是简单,缺点是访问子树需 ...
- 图像处理之优化---任意半径局部直方图类算法在PC中快速实现的框架
在图像处理中,局部算法一般来说,在很大程度上会获得比全局算法更为好的效果,因为他考虑到了图像领域像素的信息,而很多局部算法可以借助于直方图获得加速.同时,一些常规的算法,比如中值滤波.最大值滤波.最小 ...
- 正整数构成的线性表存放在单链表中,编写算法将表中的所有的奇数删除。(C语言)
/* 正整数构成的线性表存放在单链表中,编写算法将表中的所有的奇数删除 */ #include <stdio.h> #include <stdlib.h> typedef st ...
随机推荐
- 算法学习笔记(10): BSGS算法及其扩展算法
BSGS算法及其扩展算法 BSGS算法 所谓 Baby Step, Giant Step 算法,也就是暴力算法的优化 用于求出已知 \(a, b, p\), 且 \(p\) 为质数 时 \(a^x \ ...
- LeetCode 295. Find Median from Data Stream数据流的中位数 (C++/Java)
题目: Median is the middle value in an ordered integer list. If the size of the list is even, there is ...
- MoneyPrinterPlus:AI自动短视频生成工具,赚钱从来没有这么容易过
这是一个轻松赚钱的项目. 短视频时代,谁掌握了流量谁就掌握了Money! 所以给大家分享这个经过精心打造的MoneyPrinterPlus项目. 它可以:使用AI大模型技术,一键批量生成各类短视频. ...
- 将html页面转成pdf下载保存(html2canvas + jspdf或者Print调出打印功能导出pdf)
方案1:html2canvas + jspdf (缺点:清晰度不高) 安装插件: 亲测可用 yarn add html2canvas yarn add jspdf import html2canvas ...
- vue使用wx-open-launch-weapp
vue使用wx-open-launch-weapp 官方文档 <template> <div style="width: 100%; height: 100%;" ...
- linux解压缩,复制,重命名,删除,目录按更新时间排序,grep递归搜索文档
linux解压缩,复制,重命名,删除,目录按更新时间排序,grep递归搜索文档 1.解压缩压缩命令 zip -p -r mymail-1026.zip mymail/ 解压命令 unzip mymai ...
- es6.6.1 rest常规操作
ES 内置的REST接口/ 获取版本信息/index/_search 搜索指定索引下的数据 test/_search/_aliases 获取或者操作索引下的别名 _aliases/index/ 查看指 ...
- Linux chmod -bash: ./xx.sh: Permission denied的解决方案
Linux -bash: ./xx.sh: Permission denied的解决方案启动tomcat命令:./startup.sh之后提示-bash: ./startup.sh: Permissi ...
- 开源一个反sql注入的asp.net core中间件
现在公安有一个专门负责信息安全的部门,前几天公司就收到了一个整改通知,防sql注入的整改. 我们公司开始对网站进行了简单的测试,普通的sql都能检测出来. 但还是被发了整改通知,肯定有些sql注入的方 ...
- FFmpeg开发笔记(三十二)利用RTMP协议构建电脑与手机的直播Demo
不管是传统互联网还是移动互联网,实时数据传输都是刚需,比如以QQ.微信为代表的即时通信工具,能够实时传输文本和图片.其中一对一的图文通信叫做私聊,多对多的图文通信叫做群聊. 除了常见的图文即时通信,还 ...