본문 바로가기
소프트웨어 & 클라우드

[OpenGL] 변환 (회전, 이동, 크기 변경)

by TaeGyeong Lee 2023. 4. 24.

변환 행렬 초기화

OpenGL에서는 아래와 같은 변환을 위해 변환행렬을 사용합니다. 만일 이전에 사용한 병환 행렬을 초기화하지 않으면 원하는 결과가 나오지 않을 수 있습니다. 아래 함수 호출을 통해 변환 행렬을 항등 행렬로 초기화합니다.

glLoadIdentity();

 

회전 (Rotation)

기존 위치 기준 0.0 이 아닌 축을 기준으로 주어진 각도만큼 회전합니다. 일반적으로 z축을 기준으로 회전시킵니다.

glRotatef(각도, x, y, z);

 

이동 (Translation)

기존 위치 기준 (일반적으로 중심점)에서 각 좌표계에서 입력한 파라미터 만큼 입력합니다.

glTranslatef(x, y, z)

 

크기 조정 (Scaling)

해당 좌표계의 값이 1.0이 아니면 지정한 비율만큼 확장, 축소합니다.

glScalef(x, y, z);

 

적용은 역순으로

위 세 가지 함수를 혼용하여 다양한 도형을 그릴 수 있습니다. 이 때 주의해야 하는 점은, 함수의 실행 순서는 역순입니다. 변환행렬을 활용하여 행렬 연산을 하기 때문에 코드 작성의 역순으로 실행됩니다.

 

정리

- glLoadIdentity();

- glRoatef glTranslatef glScalef

- 함수 실행 순서는 역순