본문 바로가기
3D Algorithm

3차원 회전

by DarkRock 2024. 9. 13.
반응형

3차원 회전 변환행렬은 xy평면(z축 회전), xz평면(y축 회전), yz평면(x축 회전)으로 분류하여 아래와 같습니다.

출처:wiki


이러한 변환행렬을 쉽게 계산해 주는 라이브러리들이 많이 있습니다. 그 중 glm(OpenGL Mathematics)을 예로 설명드리면, z축으로 45도로 회전의 변환 행렬 계산 코드는 아래와 같습니다.

glm::rotate(glm::radians(45.0f), glm::vec3(0.0f,0.0f,1.0f));


아래는 위 코드를 적용해서 cube를 회전시키는 그림입니다.

45도 회전


만약 큐브 중심에서 z축으로 45도로 회전시키고 싶다면, 큐브를 원점으로 옮기고
45도로 회전한 후 다시 큐브의 위치로 옮겨야 합니다.

큐브 중심에서 45도 회전


회전을 하기 위해서는 각도와 회전축, 중심점을 알아야 하지만 기본적으로 중심점은 원점으로 되어 있습니다. 그래서 물체 중심에서 회전축으로 회전하기 위해서는 물체를 원점으로 옮기고 회전, 다시 물체를 원래 위치로 옮겨야 합니다.
행렬 계산 코드는 아래와 같으며, 마지막으로 계산된 Mat을 cube에 적용해야 최종적으로 회전이 됩니다.

glm::mat4 MatTransInv = glm::translate(glm::vec3(-10.0f, 0.0f, 0.0f));
glm::mat4 MatRotate = glm::rotate(glm::radians(45.0f), glm::vec3(0.0f, 0.0f, 1.0f));
glm::mat4 MatTrans = glm::translate(glm::vec3(10.0f, 0.0f, 0.0f));
glm::mat4 Mat = MatTrans*MatRotate*MatTransInv;

 


가끔 회전관련해서 개발하다 보면 위 내용을 잊고 있어서 정리해 봤습니다. ㅎㅎ

임의의 중심점에서 회전하는 글은 아래글을 참고하세요.

2024.09.13 - [3D Algorithm] - 임의의 중심점에서 3차원 점 회전

 

임의의 중심점에서 3차원 점 회전

원점에서의 3차원 회전글은 아래글을 통해서 설명했습니다.2024.09.13 - [3D Algorithm] - 3차원 회전 3차원 회전3차원 회전 변환행렬은 xy평면(z축 회전), xz평면(y축 회전), yz평면(x축 회전)으로

darkrock.tistory.com

 

반응형

'3D Algorithm' 카테고리의 다른 글

삼각함수 표와 계산 및 활용  (0) 2024.09.23
특정 좌표 중심에서 3차원 점 회전  (0) 2024.09.13
벡터 계산과 단위벡터  (0) 2024.09.11
3차원 두 직선 교차점(Two Line Intersection)  (0) 2024.09.10
Morton Code  (0) 2024.09.04