求多边形包围区域:
已知单元格中,黑色部分为封闭边缘,如何求出绿色部分也在包围圈之内?
先定义一个概念:左(右)侧包围。指的是以一条边为参考,其左(右)侧部分在包围区域内,称之为左(右)侧包围。
有了上面的概念之后,只需要选定一个点作为起点并沿边缘走一圈再回到起点,通过判断向左侧拐和向右拐的次数,若左拐次数大于右拐次数则为左侧包围,反之为右侧包围。
在给定的包围顺序下判定了左(右)侧包围,遍可获得包围区域
以上过程,只要封闭路径确定,那么左拐和右拐的次数一定不会相等。
当封闭路径不确定时如图:
蓝色部分与黑色边构成封闭区域,如何求绿色包围区域?
如果按照第一种情况里说的找一个确定的封闭路劲是可以解决问题的,但若遇到更为复杂的情况一来找出这条确定的路径比较困难,再者即便找出来了,也可能会包围本不应该在包围区域内的格子。
回归到问题的最本质:求包围区域,一定是要所有可能的点都在包围圈中,如果存在包围泄漏,说明包围圈不封闭,或者本身就在包围圈外。有了这个思路,在结合第一种求包围区域的方法,得到一个可适应所有包围情况的解决思路就不难了。