2012-07-04 6 views
2

하나의 2 차원 배열을 다른 2 차원 배열 (다른 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면으로 회전하여 일치하는지 확인합니다. 무작위로 선택한 작은지도의 샘플을 큰지도와 긍정적으로 비교하는 위치의 괜찮은 샘플을 찾기 위해이 작업을 몇 백 번 반복합니다. 기본적으로

... :)

기압 내가 그것을 알아 내려고 노력하고있어,하지만 난 그것을 도울 수 있다면 바퀴를 재발견하고 싶지 않아요.

(업데이트 : 가까운 곳으로 가서 작은 격자를 8 번 회전해야한다는 것을 깨달았습니다. 모든 거울과 일치해야합니다! UPDATE2 : LOL 해결했습니다. 오전 5시에 나는이 같은 미친 짓이야!)

+1

for-loops를 뒤집습니까? –

+0

꽤 좋은 질문입니다. 태그는 이상합니다. 호기심에서 벗어난 – thb

+0

:이게 뭐야? 전체적으로 소프트웨어는 무엇입니까? – clamp

답변

0

롤. 재미있는 문제. 나는 그것을 시도하고 싶다. 회전 행렬을 읽으십시오. 전체 행렬을 회전시킬 때와 회전 각도가 크게 걱정되는 경우에는 약간 간단합니다.

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

+0

난 단지 0, 90, 180, 270, 360 각이 필요해. 신에게 감사 해! 나중에 팁을 읽어 주셔서 감사합니다. P –