2009-10-30 3 views
1

4x4 행렬이 주어지면 행렬이 오른쪽으로 90도 회전하면 각 수식을 각 (x, y) 셀에 적용하여 (x, y)를 얻을 수 있습니까? 나는 각 세포에 반복을 시도했지만 다른 세포는 다른 수식을 주었다.회전하는 다차원 행렬

다음과 같은 값의 매트릭스가 주어졌습니다.

0 | 0,3 | 0,2 | 0,1 | 0,0 | 
1 | 1,3 | 1,2 | 1,1 | 1,0 | 
2 | 2,3 | 2,2 | 2,1 | 2,0 |  
3 | 3,3 | 3,2 | 3,1 | 3,0 | 
    -------------------------- 
    0  1  2  3 

예 :

0| | | | | 
1| | | | | 
2| | | | |  
3| | | | | 
------------- 
    0 1 2 3 

아래의 행렬을 이용하여 일치 셀의 (x, y)의 값 (X, Y) 값을 이동시킴으로써 값으로 90도 회전
If cell (0,0) has the value 5, 
using the translation matrix 5 would move to (3,0). 

이 변환 행렬을 하드 코딩하면 지루하고 오류가 발생하기 쉽고, 행렬 크기가 커지면 엄청난 숫자가 손으로 처리됩니다. 당신이 그것에 대해 어떻게 생각하는지

the cell (i, j) will move to (j, n-i) 

은 다음과 같습니다 당신이 nn에 의해 매트릭스가있는 경우

+0

와 Heres는 일례이 이차원 행렬이다. 2 차원 이상으로 행렬을 회전 시키시겠습니까? –

답변

3

(i, j) 가정하면 오른쪽으로 회전을위한 i 번째 행과 j 번째 열을 의미한다. 전체 그림i 번째 행. 행렬을 회전하면 전체 행이 전체 열로 바뀝니다. 어느 것? 오른쪽에서 i 열, 즉 n-i 열입니다.

그림 전체 그림j 열입니다. 회전하면 열이 행으로 바뀝니다. 어느 것? 상단에서부터 행이 j, 즉 행이 j 일 것입니다.

+0

작동하는 것 같습니다, 감사합니다! 결과를 변동시키는 시도 된 방정식에서 j를 사용하고 있었지만, n이 필요하다고 생각합니다. – TheOne

+0

아마도 "변동"은 매트릭스를 반영하고 있다는 것을 의미합니다. Heres는 못생긴 코드 : 의 – Cascabel