我有一个二维高度地图,格式如下:
06 36 39 42 43 55 ...
37 40 43 43 45 46 ...
40 43 44 45 46 48 ...
44 44 46 47 48 50 ...
41 44 45 47 48 48 ...
...
我需要将其重新映射为基于格林的轮廓格式(以便可以进一步映射为精灵)
. . . . | . .
. . . . \ . .
. . . / / . .
. . . | . . .
. . . | . . .
. / - / . . .
这里的 .
表示平坦区域,|
和 -
表示直立的悬崖,/
和 \
表示悬崖的拐角 (每个字符都代表两种不同的可能性)。
我尝试了标准的 marching squares 方法,但发现只采样3个相邻点会导致很多问题,因为它会过度加载相邻的情况。 (请注意下方不合适的额外直立悬崖)
. . . . | . \
. . . . \ \ .
. . . / / - .
. . . | - . .
. . . | . . .
. / - / . . .
我希望能得到一些算法/方法的参考,以帮助处理这种情况。我知道使用某种深度优先搜索的轮廓线走访是一种选项,但尚未尝试过,并且宁愿把它留作最后的选择。还有一些特征的表示问题,例如是否包括仅为1个元素的崖壁脊或者只是忽略它们。另一种选择是通过生成的轮廓并使它们平滑地拟合在一起,但这似乎太hacky了...