2

したがって、ある 2 次元配列を別の 2 次元配列 (実際には別のより大きな 2 次元配列の一部) と比較したいと考えています。私がする必要があるのは、最初の配列を 2 番目の配列と比較することですが、必要に応じてそれらの 1 つを回転させて、複数の角度から比較する必要もあります。

私はこれを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:笑私はそれを解決しましたwtf。コードが実際に何をするかを理解したらすぐに投稿します。午前 5 時、私はこのようにクレイジーです!)

4

1 に答える 1

0

笑。興味深い問題です。私もやってみたいです。回転行列を読み取ってみてください。マトリックス全体を回転させる場合、および回転角度が非常に重要な場合は、少し簡単です。

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

于 2012-07-04T16:35:32.203 に答える