2

所以我想将一个二维数组与另一个二维数组(实际上是另一个更大的二维数组的一部分)进行比较。我需要做的是将第一个数组与第二个数组进行比较,但我还需要从多个角度进行比较,如果你愿意,可以旋转其中一个。

我正在用 C++ 编写这个并且我正在使用向量(如果有特定的算法或函数可以帮助这些)

这是我需要做的一个例子:

Take this map:

0001000
0001000
0001000
0001111
0000000

Compare it to this (which means if 1 is road and 0 is grass, this would help 
me find 'turns' in the road):

010
110
000

Comparing it like that won't yield any results, BUT, if I rotate it to 180
degrees:

010
011
000

It fits.

更具体地说,我会将一大堆小数组与大数组进行比较。我不会比较大阵列上的每个位置,只随机选择一个位置和一个小阵列,将小阵列旋转到所有 4 个边,看看它们是否匹配。我将重复此操作数百次,以找到一个不错的位置样本,其中随机选择的小地图样本与大地图相比呈正比。

基本上... :)

Atm 我正在努力解决这个问题,但如果我能帮上忙,我不想重新发明轮子。

(更新:接近解决这个问题!我意识到我实际上需要将较小的网格旋转 8 次,我需要匹配每个镜像!更新 2:大声笑我解决了这个问题。一旦我理解了代码的实际作用,我就会发布,也可以。早上 5 点我就这样疯了!)

4

1 回答 1

0

哈哈。有趣的问题。我也想试试。尝试读入旋转矩阵。当涉及到旋转整个矩阵时,它们有点简单,如果旋转角度非常关心你。

http://en.wikipedia.org/wiki/Rotation_matrix

于 2012-07-04T16:35:32.203 回答