본문 바로가기

그래픽스/빠르게 훑어보는 그래픽스

3. Geometric Transformations

 

 

 

 

 

 

 

 

식 전개를 왜 저렇게함?

 

 

동차 좌표 때문

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

왜 y 축 기준 변환만 역변환처럼 보임?

오른손좌표계라, y축 기준으로 보면 z축이 x축처럼, x축이 y축처럼 되어서 그럼 (x축과 z축이 counter clock wise 순서가 아님)

 

 

 

 

 

 

 

 

 

 

P2 에서 P1 뺀다음 rotation axis vector V 구하고

그걸 정규화한게 u

그리고 원점으로 translation

 

 

 

우리가 하고싶은건

u 벡터를 x축 기준으로 회전시켜서 xz 평면 위에 위치시킴

그 후 y 축 기준으로 회전시켜서 z 축이랑 똑같이 맞추는 건데

 

근데 이걸 하려면 일단 각도 α 를 찾아야함

뭐 α 값을 그대로 갖다 쓰는건 아니고 cos α 랑 sin α 만 찾으면 된다

 

일단 u 벡터를 yz에 정사영 시키면 u'

u'을 z축 단위벡터랑 내적한 후, 각각의 크기로 나누면 cos α 을 구할 수 있음

 

sin α 는 뭐 구하는 방법 여러가지 있겠다만

< x, y, z > < 0, b, c > < 0, 0, 1 > 이용해서 외적해서 식을 유도할 수 도 있고

아니면 뭐 중등 교육과정인 1 - ( cos α ) ^ 2 = ( sin α ) ^ 2 이용해서 유도할 수도 있고

(제곱근 시킨 후에, 아마 벡터 순서 고려해서 부호 결정해야할듯?)

 

  

 

이 것도 위 슬라이드와 원리는 비슷함

u 벡터 xz 평면에 정사형 시키면 u'' 벡터 구할 수 있고

cos β 값은 z축 단위벡터랑 u'' 막 이러고 저러고 해서 구하고

sin β  값도 뭐 < a, 0, d > × < 0, 0, 1 > 외적해서 식 유도하거나,

중등 수학 1 - ( cos β ) ^ 2 = ( sin β ) ^ 2  쓰거나

 

 

  

 

 

 

 

 

 

행렬식이 저렇게 창나는 이유가?

 

Xp = Sx( X - Xf ) + Xf

Yp = Sy( Y - Yf ) + Yf

Zp = Sz( Z - Zf ) + Zf

 

정석은 위 수식이고, 훨씬 직관적이지만, 이를 4x4 행렬식으로 표현하려면 

aX + bY + cZ + D 에서 D 부분으로 묶여야하기 때문

 

Xp = Sx*X +   0*Y +   0*Z + (1-Sx)Xf

Yp =   0*X + Sy*Y +   0*Z + (1-Sy)Yf

Zp =   0*X +   0*Y + Sz*Z + (1-Sz)Zf

 

 

 

 

 

나중에 view volume 정규화 과정에서, right hand -> left hand 로 바뀌므로 행렬 유심히 봐두면 좋다

 

x 축 shear, y 축 shear 는 쓸일 없겠지만 일단 행렬은 위 그림과 같다