결론부터 말하자면
아핀 변환(Affine Transformation)이란 점, 직선, 평면, 평행선을 보존하는 변환
동차 좌표계(Homogeneous Coordinates)를 사용하면 아핀 변환을 하나의 행렬곱으로 나타 낼 수 있다.
동차 좌표계(x, y, z,ω)에서 ω값으로 점은 1 벡터는 0이다.

Affine Transformation = linear + translation


  • 점, 직선, 평면, 평행선 + 몇 가지 더.. 를 보존하는 변환
  • linear + translation으로 여러 가지 transformation이 있다.
  • 중요한 건, 동차 좌표를 이용해서 계산하면 매우 편리하다는 것!!

Rigid Transformation = Rotation + translation


  • affine의 일종
  • 강체 변환 이라고도 함. 형체는 그대로이다.

linear Transformation


T(v) = Mv 형식의 선형 이동. 행렬 곱 연산으로 가능한 것

  • uniform scale, non-uniform scale,
  • Rotation
  • reflection
  • shear

Non-linear Transformation


T(v) = v + u 형식의 이동

  • translation

Homogeneous coordinates(동차 좌표)


Affine Transformation을 계산할 때 linear + Translation 계산을 한 번의 행렬 연산으로 합치기 위해 행렬을 한 줄 추가시킨 homogenous coordinates를 사용하면 행렬곱 하나로 Affine을 표현할 수 있다.

쉽게 말해서,
3차원에서 point는 (x, y, z,1)으로 vector은 (x, y, z,0)로 각각 한 차원을 더 준다음
Transformation을 4X4행렬에 통합한 후 계산한다는 것.

아래와 같은 행렬 형태로 나타낼 수 있다.

아랫부분은 이해가 안 되면 넘어가시면 돼요!

동차 좌표계의 선형 대수적인 의미!


동차 좌표계를 사용함에 따라 행렬 하나로 아핀 변환을 나타낼 수 있다는 장점이 있지만, 왜 하필 4번째 인자로 point는 1 벡터는 0을 주는 걸까요?
선형 대수적인 의미가 있습니다!
수업시간에 이해가 잘 안 되어서 따로 찾아보고 최대한 이해하기 쉽게 정리해 보았습니다.

벡터 공간과 아핀 공간

벡터 공간
벡터 공간이란 말 그대로 점이 없고 벡터만 존재하는 가상의 공간입니다.
점이 없기 때문에 크기와 방향만 같다면 모두 같은 벡터입니다.
하지만 벡터 공간으로 우리가 사는 공간을 나타 낼 수 없기 때문에 우리는 위치를 나타내는 점이 필요합니다.

아핀 공간
아핀 공간은 벡터 공간에 위치를 나타내는 점이 추가된 공간입니다.
원점이 따로 없기 때문에 우리가 사는 세상도 아핀 공간이라고 할 수 있습니다.
그러면 아핀 공간에서의 점과 벡터를 이용한 연산을 수학적으로 나타 낼 수 있다면 우리가 사는 세상을 컴퓨터로 표현할 수 있겠죠?
그러면 우리가 생각하는 데로 물체의 움직임을 코딩해서 그래픽스적으로 볼 수 있겠죠?

참고로 아핀 공간에서 점과 벡터끼리의 연산은 아래와 같습니다.

u,v,w : vectors
p,q : points

u + v : vector
p + w : point
u - v : vector
p - q : vector
p - w : point
p + q : 정의 x

아무튼 우리는 해당 연산들을 연산으로 나타내야 합니다.

그런데 문제가 하나 있습니다.
3차원 아핀 공간을 컴퓨터로 연산하기 위해 표현하려고 하니 점과 벡터의 표기가 같습니다.
점(1,2,3)과 벡터(1,2,3)를 나타내는 방법이 인자 3개로 똑같이 나타내면 표기가 같아서 컴퓨터가 구별할 수 없다는 겁니다.
그래서 우리는 3차원 점, 벡터를 구별하기 위해 인자를 하나 더 주어서 점인지 좌표인지를 구별해 주어야 합니다.
따라서 인자를 하나 더 주어야 하기 때문에 한 차원 높은 동차 좌표계를 사용하면 4차원으로 3차원의 점과 벡터를 구별할 수 있습니다.
왜 동차 좌표계가 필요한지 이제 아시겠죠?!

그러면 왜 점은 1 벡터는 0일까요?

3차원 아핀 공간의 점 p(1,2,3), 점 q(2,4,6), 벡터 u(1,2,3), 벡터 v(2,4,6) 4가지를 가지고 생각해봅시다.
아핀 공간에서 점 p와 점 q는 다르지만 벡터 u와 벡터 v는 같습니다.

벡터의 경우
동차 좌표계(x, y, z,ω)로 벡터 u, v를 나타냈을때 ω값으로 0 을 주면 u(1,2,3,0), v(2,4,6,0) 이렇게 나타 낼 수 있고
v의 모든 인자를 2로 나누면 u,v 모두 (1,2,3,0)이므로 같은 벡터임을 알 수 있습니다.
ω값으로 0을 주게 되면 (x, y, z)의 비율이 같으면 모두 같은 벡터로 볼 수 있다는 겁니다.

점의 경우
점 p 점 q가 다르기 때문에 점 q의 x, y, z값을 2로 나누었을 때 4번째 인자 ω의 값이 점 p와 달라야 두 점이 다르다고 나타 낼 수 있습니다. 따라서 w값으로 0이 아닌 특정한 값을 기준으로 정해주어야 하고, 1을 사용하기로 기준을 정해 놓았습니다.
그래서
(2,4,6,1)을 2로 나누면 (1,2,3,1/2)이므로 (1,2,3,1)과 다른 점입니다.
(1,2,3,1)과 (2,4,6,2)는 모두 3차원의 점(1,2,3)입니다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • shared트위터 공유하기
  • shared
  • 카카오스토리 공유하기