컴퓨터/프로그래밍

행렬 회전 알고리즘

Begi 2020. 5. 14. 23:54
반응형

행렬 회전 중 시계방향으로 90도 회전은 다음 그림과 같다.

 

위와 같이 시계방향으로 90도 회전하는 알고리즘은 다음과 같이 구현할 수 있다. 여기서 mat은 원래 행렬이고 mat1은 회전된 행렬이다.

 for(i=0; i<3; i++)
 {
   for(j=0; j<3; j++)
    {
      mat1[j][3-i-1] = mat[i][j];
    }
 }

행렬 크기가 커지면 위 코드에서 3 부분을 바꾸면 된다.

 

반시계방향으로 90도 회전하는 알고리즘은 다음과 같이 구현할 수 있다.

 for(i=0; i<3; i++)
 {
   for(j=0; j<3; j++)
    {
      mat1[3-j-1][i] = mat[i][j];
    }
 }

 

시계방향으로 180도 회전하는 알고리즘은 위의 90도 회전 알고리즘을 2번 실행하던지 아니면 다음과 같이 구현할 수 있다.

 for(i=0; i<3; i++)
 {
   for(j=0; j<3; j++)
    {
      mat1[3-i-1][3-j-1] = mat[i][j];
    }
 }

 

반응형