找到圆形网格中的所有单元格?

时间:2014-06-11 16:56:11

标签: algorithm actionscript-3 shapes

我有一个100乘100的网格,我有一个圆圈。我希望圆圈在圆圈覆盖的每个单元格中放置一个值。有一个很好的算法吗?我将使用as3,但我不认为这将是一个问题。

修改。

我正在尝试找到一种算法,该算法将返回圆内的所有单元格以及半圆形/大部分位于圆圈内的所有单元格(大于50%)。因为我没有找到执行此操作的算法,所以我无法显示任何代码。

2 个答案:

答案 0 :(得分:1)

我知道这是一个古老的问题,但对于在这里寻找答案的任何人(像我一样)可能会有用。

我采用的(伪代码)方法是使用两个相对的角在中心a,b半径r的圆周围确定一个边界框:

topLeft = (x:a - r, y:b + r)
bottomRight: (x:a + r, y:b - r)

然后遍历边界框内的所有正方形并测试它们是否在圆中

for(x between topLeft.x and bottomRight.x){
  for(y between topLeft.y and bottomRight.y){
    if((x-a)^2 + (y-b)^2 < r^2){
      // point is in circle
    }
  }
}

答案 1 :(得分:-1)

从圆圈的中心开始。标记该网格方块。现在从该正方形开始构造一个螺旋线,沿螺旋线检查每个网格方块并根据需要进行标记。将会有一些公式表明螺旋的每个新转弯将持续多长时间。当螺旋完整转弯在圆圈外时,您不需要再检查网格方块。