선형변환
특정 2차원 좌표에 대한 선형변환은 일반적으로 [2×2] 행렬을 통해 이루어진다.

  • 축척변환 : `[x',y']=[x,y]*[(Z_x,0),(0,Z_y)]`
                   이때 `Z_x`는 `x` 축 배율, `Z_y`는 `y` 축 배율,
                   `x`축만 3배 : `[2,1]*[(3,0),(0,1)]=[6,1]`
  • 회전변환 : `[x',y']=[x,y]*[(cos(phi),sin(phi)),(-sin(phi),cos(phi))]`
                   이때 `phi`는 회전각
                   90도 회전 : `[2,1]*[(0,1),(-1,0)]=[-1,2]`
  • 대칭변환 : `[x',y']=[x,y]*[(cos(2phi),sin(2phi)),(sin(2phi),-cos(2phi))]`
                   이때 `phi`는 반전축의 각도
                   `x`축 반전 : `[2,1]*[(1,0),(0,-1)]=[2,-1]`

상관변환 또는 아핀변환(Affine Transform)
이동변환은 선형변환이 아니므로 [2×2] 행렬만을 가지고는 변환할 수 없다.
이동변환을 고려하기 위해서는 행렬의 곱외에 벡터의 합을 사용해야한다.

만약 한 점 `[5,1]`을 90도 회전시켜 `x`축으로 3, `y`축으로 2 만큼 이동시키려면 다음과 같이 계산해야 한다.

`[5,1]*[(0,1),(-1,0)]+[3,2]=[-1,5]+[3,2]=[2,7]`

이렇게 선형변환 후에 이동변환을 수행하는 것을 상관변환 또는 아핀변환(affine transformation)이라고 한다. 아핀변환을 효율적으로 구현하기 위해서 컴퓨터 프로그램에서는 [3×3] 행렬을 이용하기도 한다. [3×3] 행렬을 구성하기 위해서는 이동 부분을 세번째 행에 포함시키고, 세번째 열의 값은 `[(0),(0),(1)]`로 설정해준다.

[3×3] 행렬을 이용하게 되면 점의 좌표도 3차원으로 표시해야하는데 이때 세번째 차원에 해당되는 값은 무조건 1로 설정하면 된다.

이와 같은 방법으로 위의 예제를 풀어보면 다음과 같다.

`[5,1,1]*[(0,1,0),(-1,0,0),(3,2,1)]=[2,7,1]`

결과로 나온 `[2,7,1]`의 세번째 차원의 값도 역시 1이며 실제로 의미가 없다.

결과적으로 앞서의 선형변환과 이동을 포함한 상관변환의 일반식은 다음과 같이 정리할 수 있다.

  • 축척변환 : `[x',y',1]=[x,y,1]*[(Z_x,0,0),(0,Z_y,0),(0,0,1)]`
                   이때 `Z_x`는 `x` 축 배율, `Z_y`는 `y` 축 배율,
                   `x`축만 3배 : `[2,1,1]*[(3,0,0),(0,1,0),(0,0,1)]=[6,1,1]`
  • 회전변환 : `[x',y',1]=[x,y,1]*[(cos(phi),sin(phi),0),(-sin(phi),cos(phi),0),(0,0,1)]`
                   이때 `phi`는 회전각
                   90도 회전 : `[2,1,1]*[(0,1,0),(-1,0,0),(0,0,1)]=[-1,2,1]`
  • 대칭변환 : `[x',y',1]=[x,y,1]*[(cos(2phi),sin(2phi),0),(sin(2phi),-cos(2phi),0),(0,0,1)]`
                   이때 `phi`는 반전축의 각도
                   `x`축 반전 : `[2,1,1]*[(1,0,0),(0,-1,0),(0,0,1)]=[2,-1,1]`
  • 이동변환 : `[x',y',1]=[x,y,1]*[(1,0,0),(0,1,0),(x_1,y_1,1)]`
                   이때 `x_1`, `y_1`은 `x`축과 `y`축의 이동량

변환의 합성
주어진 점에 대해 행렬을 곱하면 새로운 점이 생겨나므로 새로 생긴점에 다시 다른 변환 행렬을 곱하여 변환을 계속 할 수 있다. 이때 행렬에 대해 결합법칙은 성립한다는 것을 상기하면 변환행렬의 합성이 가능하다는 것을 알 수 있다. 이때 주의해야할 점은 행렬은 교환법칙이 성립하지 않는다는 것이다. 즉 변환의 순서대로 행렬을 곱해야 제대로 합성된 변환행렬을 얻을 수 있다.

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/09/02 21:09 2008/09/02 21:09
BLOG main image
새미 기픈 믈은 가마래 아니그츨씌.. by

카테고리

전체 (74)
궁시렁 (15)
(3)
(37)
GIS (7)
GeoTagging (8)
테터 & 텍스트큐브 (0)
바로 그때.. (3)
검색/링크 (0)

최근에 올라온 글

Total : 389196
Today : 40 Yesterday : 97
Download MathPlayer글 내용중의 수식을 보시려면 ^^
Creative Commons License

이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
자신만의 홈페이지를 만들어 올릴 공간을 갖고 싶다면,
한달에 오백원만 투자하세요