大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
0.引言
记录一下,不然久了可能就看不懂了。
1.图解Neighbor Pruning & Forced Neighbors
case3中,方向为正方体对角线。
// nsz contains the number of neighbors for the four different types of moves:
// no move (norm 0): 26 neighbors always added
// 0 forced neighbors to check (never happens)
// 0 neighbors to add if forced (never happens)
// straight (norm 1): 1 neighbor always added
// 8 forced neighbors to check
// 8 neighbors to add if forced
// diagonal (norm sqrt(2)): 3 neighbors always added
// 8 forced neighbors to check
// 12 neighbors to add if forced
// diagonal (norm sqrt(3)): 7 neighbors always added
// 6 forced neighbors to check
// 12 neighbors to add if forced
static constexpr int nsz[4][2] = {
{
26, 0}, {
1, 8}, {
3, 12}, {
7, 12}};
straight (norm 1): 即是case1,对垂直与屏幕的平面,从当前节点检测周围8个点是不是障碍物,如果是,则下一平面的8个点即为forced neighbors,将8个均加入openset,疑问:为什么不是将下一平面的9个点均加入?哦:1 neighbor always added。
diagonal (norm sqrt(3)): 即是case3,从小正方体看,”7 neighbors always added”容易理解(7个natural neighbors),从底层图看,图中没画完全,再考虑障碍物对称情况,可能会有6个forced neighbors。“12 neighbors to add if forced”是最多12个neighbors加入openset,而不是13个。
diagonal (norm sqrt(2)): 即是case2,先看case3,再看case2其实更好理解,case2的顶层类似于case3的底层,于是有6个可能的forced neighbors,然后再看中间层的情况,同样是只画了一部分(画全了更不好理解了),对称性加上去就可以看出有2个可能的forced neighbors,故,case2一共有8个可能的forced neighbors。方向只在中间层,“3 neighbors always added”很好理解。疑问:为什么是“12 neighbors to add if forced”而不是11?
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/191360.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...