当前位置:   article > 正文

二维瓦片网格边界检测_提取瓦片中 数据边界

提取瓦片中 数据边界

 

二维瓦片网格边界检测

1. 每个网格只考虑ENWS四个相邻格子

四个相邻格子ENSW编号为0~3

2. 当前方向D(0~3): 如果当前格子是上一个格子选择的ENSW(0~3)中的一个, 则这个选择就是当前方向

3. 选择下一个的策略:

按找以下优先级判断 (D+3)%4, (D+4)%4, (D+5)%4, (D+6)%4

(第一优选是右手侧, 最后一项是原路返回)

如果这四个点都不是, 则本点是孤立点.

4. 头节点

检测到的第一个边界点作为头节点, 把与头节点相邻的外界点(或者边界)看作上一个点.

如果是按照W->E, N->S的顺序检测, 则头节点的方向是E

5. 结束

当再次遇到头结点, 则结束

 

 

  1. #include <iostream>
  2. enum Dir {
  3. E = 0,
  4. N,
  5. W,
  6. S,
  7. DirMax
  8. };
  9. enum { Empty = 0, Full = 1, Flag = 2 };
  10. struct Point {
  11. int x;
  12. int y;
  13. bool operator==(const Point& p) const { return x == p.x && y == p.y; }
  14. bool operator!=(const Point& p) const { return !(*this == p); }
  15. // 边界和外部
  16. bool CheckPoint(int* map, int w, int h) {
  17. if (x < 0 || y < 0) return false;
  18. if (x >= w || y >=
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/335962
推荐阅读
相关标签
  

闽ICP备14008679号