帮助理解行进方块算法

时间:2011-05-12 20:42:32

标签: c++ algorithm

在我的游戏中,我想沿着单色图像的边缘排列方块: enter image description here

所以我发现这个算法应该解决这个问题。 http://en.wikipedia.org/wiki/Marching_squares

这似乎并不难实现,我只是觉得我并不完全理解Wiki所说的内容。我想我必须将图像分解成单元格,其中每个单元格代表图像上的2x2像素?那是对的吗?然后我被这条指令弄丢了:

对于轮廓网格中的每个单元格:

1.在单元格的角上组成4位以构建二进制索引:沿顺时针方向在单元格中走动,将位附加到索引,使用按位OR和左移,从最高位到左上角,左下角最低位。得到的4位索引可以在0-15范围内具有16个可能的值。

我不知道如何追加这个位。

由于

1 个答案:

答案 0 :(得分:1)

创建2x2单元格后,为每个单元格计算一个如下数字:

  • 将数字设置为0
  • 如果左上角点高于阈值,则添加8
  • 如果右上角位于上方,则添加4
  • 如果右下角位于上方,则添加2
  • 如果左下角高于阈值,请添加1.

编辑格式。