* 행렬 구조
glLoadMatrixf(M) => Matrix M은 [a, b, c, d, e, f, ..., p]의 배열로 획득그런데 이것을 4x4 Matrix 형태로 나타내면
M = [ a e i m
b f j n
c g k o
d h l p] 형태가 된다.
glMulMatrixf(M)을 하면 곱셈은 post multiplication(후위 곱셈)을 취한다.
CTM = CTM * M;
* CTM(Current Transformation Matrix)
* Post multiplication 응용
1. glTranslatef(); => CTM = CTM*T
2. glScalef(); => CTM = CTM * S
3. glRotatef(); => CTM = CTM * R
1,2,3을 한 식에서 보면, CTM = CTM*T*S*R 이된다.
적용 해석은 3(회전)=>2(배율)=>1(이동)
* 정점 적용
1. glTranslatef(); => CTM = CTM*T2. glScalef(); => CTM = CTM * S
3. glRotatef(); => CTM = CTM * R
4. glVertex3f() => P' = CTM * P
1,2,3,4을 한 식에서 보면, P'=CTM*T*S*R*P가 된다.
- P는 정점
* OpenGL 파이프라인
OpenGL은 model 변환(물체 변환)과 view변환(카메라 변환)이 한번에 적용되어 있다.model 행렬
1. glScalef(), glRotatef(), glTranslatef()
2. P' = S*R*T*P
view 행렬: gluLookAt()
3. P' = V*S*R*T*P
댓글 없음:
댓글 쓰기