앞서 알아본 2차원상 물체 변환에서 3차원으로 확대를 시키면 어떤 식으로 처리를 해야될까에 대해 고민을 해보자.
정말 간단하게도 회전을 뺸다면 대부분의 내용은 이어진다.
그럼 3차원 공간상 회전은 어떻게 이뤄질 지에 대해 알아보자.
1. 회전
3차원 공간상에서 단순히 회전하라고 준다면 어디로?라는 질문이 따라온다. 즉 회전축(Rotation axis)을 명시를 해주지 않는다면 안 된다는 것이다. 표기는 다음과 같다.
또 추가한다면 보통 오른손 좌표계라고 말하는 것을 이용한다. 이는 시계 반대방향으로 회전하는 것이 +축이라는 것이다. 그럼 z축을 먼저 정리를 해보겠다.
그렇다면 만약 x,y,z축이 아닌 어떤 벡터를 가지고 회전을 한다면 어떻게 될 것인가?
if(sqrt(a*a + b*b) Rz(C>0? theta: -theta)
else // v가 z+가 되도록 변환
Rz(theta) // 역변환
{
i) Rz(a) : { r = sqrt(a*a + b*b), cos(a) = b/r, sin(a) = a/r}
Rx(b) : { r = sqrt(b*b + c*c), cos(b) = c/r, sin(b) = b/r}
ii) Rz(theta)
iii) inverse of (i)
}
'Graphics' 카테고리의 다른 글
[Graphics] 06. 3D 이미지 생성을 위한 작업 (0) | 2021.12.21 |
---|---|
[Graphics] 04. 2차원상 물체 변환 (0) | 2021.12.21 |
[Graphics] 03. 윈도우 클리핑 (0) | 2021.12.21 |
[Graphics] 02. 디스플레이와 그리기 방정식 (0) | 2021.12.21 |
[Graphics] 01. 컴퓨터 그래픽스의 중심. 영상과 색 (0) | 2021.12.21 |