标签:sharp const sha 一个 line 过程 class src 方便
一、分析
下图包含了由正方形格子组成的道路的全部形态。(没有斜向)
单个格子的状态共有6种:
已知构成道路的格子集合:[(x1,y1),(x2,y2)...(xn,yn)],(x,y)代表格子位置。计算道路上每个格子的状态。(格子坐标系,x右正,y上正)
因为每个格子有4个临边,对格子(x,y)有临边:
左边 L: (x-1, y)
上边 T: (x,y+1)
右边 R: (x+1, y)
下边 B: (x,y-1)
假设最终格子状态为s。计算过程:
1、设置s=无邻格
2、判断L,如果有格,则s=s + L,否则s不变。(s + L)含义为s增加L方向有邻格
3、按步骤2依次判断T R B。为了方便记,如果对应临边有道路格子,则记为1,没有记为0。对于一个格子描述其临边状态可表示为:_ _ _ _
State(LTRB):0000 State(LTRB):1101 State(LTRB):1010 State(LTRB):1011 State(LTRB):1111 State(LTRB):0110
由图可见,(2)有4种旋转,(3)有两种,(4)有3种,(6)有4种。
二、实现
//按位记录4个方向的邻格状态,有为1,无为0 const int L = 1 << 0; const int T = 1 << 1; const int R = 1 << 2; const int B = 1 << 3; //计算x,y 格子的邻格状态 int s = 0; // 初始为无邻格 // 依次检查 if(IsExist(x-1, y)) s |= L; if(IsExist(x, y+1)) s |= T; if(IsExist(x+1, y)) s |= R; if(IsExist(x, y-1)) s |= B; // 最终s的值可知道在各个方向上的邻格情况
标签:sharp const sha 一个 line 过程 class src 方便
原文地址:https://www.cnblogs.com/dongzee/p/9996714.html