您的位置:首页 > 编程语言 > Go语言

JumpPointSearchPlus with GoalBounding 学习笔记1

2017-12-13 15:28 260 查看

回答为什么搜索目录会有2048条

由于每个栅格周围均有8个邻居,故在jumpDistancesAndGoalBounds_.blockedDirectionBitfield中表现为8个2进制位,计算可得(2^7)*8 = 2048
计算公式为
(jumpDistancesAndGoalBounds_.blockedDirectionBitfield * 8) + currentNode.m_directionFromParent

并且已知currentNode.m_directionFromParent为从0到8的数值,分别代表down,downRigh,right,....直到DownLeft,Null,共9个

由于

if(map.jumpDistance[i] == 0)
{
map.blockedDirectionBitfield |= (1 << i);
}

因此可知只有8位中任意一位二进制不为0,那么这个点就不是wall,因此最大的点为8个中最小一位不为0,计算可得255*8 = 2040,加上 currentNode.m_directionFromParent的(0~8)最大为2048,超过这个数值的搜索都是不成立的。

其他的细节尚在学习中,望大家多多指正
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c# jps+