Introduction
: 동차 좌표는 3차원 좌표를 4개의 요소로 표현한다. 점은 (x, y, z, 1) 형태로, 벡터는 (x, y, z, 0) 형태로 표현된다.
1. 이동
: 점 P에서 P`만큼 이동한다고 하자 행렬로 어떻게 표현할까?
T가 변화량이라면, 3차원 공간에서의 이동은 위 그림과 같이 나타낼 수 있다.
다각형을 이동하려면 그 다각형을 구성하는 정점들에 대해서만 변환을 가하면 된다. 같은 맥락에서 원을 이동할 때에는 중심의 위치만 이동한 후 동일한 반경으로 다시 원을 그려내면 된다.
2. 회전
: 3차원 회전은 항상 회전축(Axis of Rotation)을 기준으로 표현한다. 예를 들어, Z축 기준으로 회전한다는 뜻은 Z 축을 막대기라고 생각하다 Z 막대기를 돌려서 회전시키는 것이다. 그래서 회전축의 좌표는 변하지 않는다.
<Z축 기준 회전>
<X축 기준 회전>
<Y축 기준 회전>
회전 변환에서 회전각 ∂는 항상 반 시계 방향으로 명시해야 한다. 오른손 엄지가 기준 축 방향이 되도록 축을 감싸쥐었을 때, 나머지 네 손가락이 돌아가는 방향이 바로 반 시계 방향이다.
3. 크기 조절
각각 S배 만큼 증가 시킨 행렬식이다.
4. 전단
: 전단은 물체를 한쪽 방향으로 밀어낸 모습이다.
위 그림은 y-z 평면에서 +축 방향으로 밀어낸 모습이다. 위에 모서리만 밀었기 때문에 Y의 위치가 X의 변화량에 영향을 미친다. 즉, Y가 크면 클수록 X값이 크게 변한다.
x` = x + Sh(y) * y
y` = y + Sh(x) * x
여기서 Sh(x), Sh(y)는 각각 x, y 방향의 전단 인수(Shearing Factor)라고 말한다. 위에 그림에서는 Sh(x)=0 인 경우 이지만, 위의 식은 일반적인 경우를 나타낸 것이다.
이를 행렬 식으로 표현하면 아래와 같다.
5. 복합 변환
: 여러가지 변환이 합쳐진 상태이다. 변환은 각 정점에 각각 이루어 지기 때문에 복합변환이 일어나는 경우에는 정점에 변환을 순서대로 각각 곱하는것이 아니라 변환끼리 차례대로 곱해서 복합변환식을 하나로 만들어 놓고 각각의 정점에 곱하는 식으로 연산횟수를 줄인다.
6. 반사
: 물체를 축을 기준으로 대칭 반사시키는 변환을 반사 변환이라 한다. 이는 일종의 거울에 비친 모습이라 할 수 있다.
우선 위 그림과 같이 2차원 평면에서의 반사를 살펴보자. (a)에서 x축 반사시키면 (b)가 된다. y부호만 반대가 된다. (b)에서 y축 반사를 시키면 (c)가 되고 x축 부호가 반대가 된다.
이 2개의 연산을 하나로 합쳐서 복합행렬을 만들어보면 아래 그림이 된다.
추가로, y=x 축 기준으로 반사할 경우를 생각해보자.
이 경우에도 복합행렬이 이용된다. (a)에서 빨간점과 y=x 동시에 45도 회전시켜 (b)로 만든다. 그리고 빨간점을 y축 기준으로 반사시켜서 (c)를 만들고 이를 다시 -45도 회전시키면 (d)가 된다.
이를 복합행렬로 표현하면 다음과 같다.
다음은 3차원 반사 변환에 대해서 알아보자.
(a)의 사각뿔을 x-z 평면 기준으로 반사시키면 (b)가 된다. y의 부호만 반대로 된다. 이는 사실상 x축 기준으로 180도 회전한 것과 동일하다. 이를 다시 y-z 평면 기준으로 반사시키면 (c)가 된다. 이번에는 x의 부호만 반대다. (c)는 사실 y=x 평면에 반사시킨 결과와 같다.
위 그림은 x-z 펴연을 기준으로 하는 반사 변환의 행렬이다. y값만 부호가 바뀐다. y-z평면, z-x 평면을 기준으로 하는 반사 행렬식은 위 식을 변환하면 된다.
7. 구조 왜곡
: 크기 조절 변환과 비슷하지만 차이점이 있다. 크기 조절에서는 일반적으로 x, y, z 좌표에 대해 상수 값의 크기 조절 인수를 곱하는 것이 보통이지만 구조 왜곡 변환은 이 값에 다양한 함수를 할당함으로써 여러 가지 효과를 시도한다.
'영상 처리 프로그래밍' 카테고리의 다른 글
[컴퓨터 그래픽스] 투상 (0) | 2017.11.23 |
---|---|
[컴퓨터 그래픽스] 모델변환, 시점변환 (0) | 2017.11.23 |
[컴퓨터 그래픽스] 좌표계 (1) | 2017.11.23 |
[컴퓨터 그래픽스] OpenGL 기본(2) (0) | 2017.11.22 |
[컴퓨터 그래픽스] OpenGL 기본(1) (0) | 2017.11.22 |