식 전개를 왜 저렇게함?
동차 좌표 때문
왜 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 는 쓸일 없겠지만 일단 행렬은 위 그림과 같다
'그래픽스 > 빠르게 훑어보는 그래픽스' 카테고리의 다른 글
6. Illumination Models and Surface Rendering Methods (0) | 2025.05.27 |
---|---|
5. Visible Surface Detection (0) | 2025.05.25 |
4. Three Dimensional Viewing (0) | 2025.05.23 |
2. Graphics Output Primitives (0) | 2025.05.20 |
1. Overview of Graphics (0) | 2025.05.20 |