이번 문서의 목표: 3차원 공간의 이동·회전·스케일을 4x4 동차좌표 행렬로 표현해 실제 점에 곱한 결과를 구할 수 있고, x·y·z축 각각을 기준으로 한 회전의 차이와 3D 합성 변환에서 순서가 결과를 바꾸는 이유를 설명할 수 있게 된다.
왜 3D에서는 행렬이 4x4가 되는가
04편에서 2차원 점 를 동차좌표 로 확장해 행렬로 평행이동까지 표현할 수 있었습니다. 3차원 공간에서는 점이 세 개의 좌표를 가지므로, 같은 방식으로 동차좌표 을 만들고 행렬을 곱합니다. 차원이 하나 늘었을 뿐 원리는 완전히 같습니다. 다만 회전만큼은 2D와 다르게 다뤄야 합니다. 2D에서는 회전축이 항상 화면에 수직인 한 방향(원점을 지나는 z축)뿐이었지만, 3D에서는 축, 축, 축 세 가지 중 어느 축을 기준으로 회전하느냐에 따라 서로 다른 행렬이 필요합니다.
쉽게 말하면: 3D 변환은 2D와 원리가 같지만 좌표가 하나 늘고, 회전은 어느 축을 중심으로 도는지부터 먼저 정해야 합니다.
1. 3D 평행이동(Translation)
쉽게 말하면: 3D 평행이동은 점을 x, y, z 세 방향으로 각각 정해진 만큼 밀어서 옮기는 것입니다.
점을 방향으로 , 방향으로 , 방향으로 만큼 옮기는 동차좌표 행렬은 다음과 같습니다.
- 대각선(1행 1열, 2행 2열, 3행 3열, 4행 4열)은 항상 1을 유지한다.
- 이동량 는 네 번째 열의 위쪽 세 자리에 들어간다.
점 을 만큼 평행이동해 보겠습니다.
- 첫 번째 행: → 새 x좌표
- 두 번째 행: → 새 y좌표
- 세 번째 행: → 새 z좌표
- 결과: 점 이 평행이동을 거쳐 점 가 되었다. 각 좌표에 이동량을 그대로 더한 값과 일치한다.
2. 3D 회전 — 세 개의 축, 세 개의 행렬
쉽게 말하면: 3D 회전은 회전시킬 축을 하나 고정해 두고, 나머지 두 좌표만 2D 회전처럼 돌리는 것입니다.
축을 기준으로 회전할 때는 좌표는 그대로 두고 좌표만 2D 회전 공식처럼 섞입니다. 축, 축 회전도 각각 자신의 축 좌표는 고정하고 나머지 두 좌표를 섞는 방식으로 정의됩니다.
- 는 좌표를 고정하고 평면 안에서 회전시킨다(1행 1열이 1로 고정되고 나머지 3x3 부분이 04편의 2D 회전 행렬과 같은 구조).
- 는 좌표를 고정하고 평면에서 회전시킨다. 부호 배치가 와 다른 이유는 축의 순환 순서()를 따르기 때문이다.
- 는 좌표를 고정하고 평면에서 회전시키며, 04편에서 다룬 2D 회전과 사실상 같은 변환이다.
점 을 축 기준으로 도 반시계 방향 회전시켜 보겠습니다. , 입니다.
- 결과: 점 이 축 기준 90도 회전을 거쳐 점 이 되었다. 좌표는 회전축이므로 에서 변하지 않는다.
이번에는 같은 점 을 축 기준으로 도 회전시켜 비교해 보겠습니다.
- 결과: 같은 점 인데도 축 기준 90도 회전에서는 이 되었다. 회전축이 다르면 같은 점이라도 완전히 다른 위치로 이동한다.
| 회전축 | 고정되는 좌표 | 회전하는 평면 | 예시 점 (0,1,0)을 90도 회전한 결과 |
|---|---|---|---|
| 축 | |||
| 축 | (변화 없음, 이미 y축 위의 점) | ||
| 축 |
자주 틀리는 점: 세 회전 행렬의 부호 위치를 서로 헷갈리는 경우가 많습니다. 와 는 가 각각 (2행 3열), (1행 2열)에 있지만, 만 예외적으로 가 (3행 1열)에 있습니다. 이는 순환 순서를 따르기 때문이며, 시험에서는 이 부호 위치를 정확히 외워야 계산 실수를 막을 수 있습니다.
3. 3D 스케일(Scale)
쉽게 말하면: 3D 스케일도 2D와 같은 원리로, x, y, z축 방향으로 각각 정해진 배율만큼 크기를 바꿉니다.
점 을 으로 확대해 보겠습니다.
- 결과: 점 이 스케일 변환을 거쳐 점 이 되었다. 좌표는 배율이 1이라 변화가 없다.
4. 3D 합성 변환 — 순서 문제가 3D에서는 더 커진다
04편에서 확인했듯 행렬 곱셈은 교환법칙이 성립하지 않습니다. 3D에서는 회전축이 세 개나 되기 때문에 이 문제가 훨씬 두드러집니다. 특히 서로 다른 두 축을 기준으로 한 회전은 순서를 바꾸면 결과가 다릅니다. 점 에 축 90도 회전을 먼저 적용한 뒤 축 90도 회전을 적용하는 경우와, 순서를 반대로 하는 경우를 비교해 보겠습니다.
순서 1: 축 회전 후 축 회전. 먼저 점 을 축 기준 90도 회전시킵니다.
이제 이 결과 을 축 기준 90도 회전시킵니다. 이는 앞서 2절에서 이미 계산한 것과 같은 식으로, 결과는 입니다.
- “z축 회전 후 x축 회전” 순서의 최종 결과: 점 → 점
순서 2: 축 회전 후 축 회전. 먼저 점 을 축 기준 90도 회전시킵니다. 좌표가 고정되는 회전이므로, 좌표가 이고 좌표가 모두 인 이 점은 축 위에 있어 회전해도 그대로입니다.
이제 이 결과 을 축 기준 90도 회전시킵니다. 좌표가 고정되는 회전이고 이 점은 평면 위의 04편 예제와 같은 점이므로, 결과는 입니다.
- “x축 회전 후 z축 회전” 순서의 최종 결과: 점 → 점
같은 두 회전, 같은 시작점인데도 순서를 바꾸자 결과가 과 으로 달라졌습니다.
비유: 정육면체 상자를 손에 들고 먼저 세로축(z축)으로 한 바퀴의 4분의 1만큼 돌린 다음 가로축(x축)으로 다시 4분의 1을 돌리는 것과, 먼저 가로축으로 돌린 다음 세로축으로 돌리는 것은 상자가 최종적으로 놓이는 방향이 다릅니다. 비행기의 롤(roll)·피치(pitch)·요(yaw) 회전을 어떤 순서로 적용하느냐에 따라 최종 자세가 달라지는 것도 같은 원리입니다.
자주 틀리는 점: “같은 축을 두 번 회전하면 순서가 상관없다”는 것과 “서로 다른 축을 회전하면 순서가 상관없다”는 것을 혼동하면 안 됩니다. 같은 축을 기준으로 한 두 회전(예: 축으로 30도 회전 후 다시 축으로 60도 회전)은 각도를 더한 것과 같아 순서가 상관없지만, 서로 다른 축을 기준으로 한 회전은 일반적으로 순서를 바꾸면 결과가 달라집니다.
핵심 정리
- 3D 변환은 동차좌표와 행렬을 사용하며, 평행이동은 네 번째 열에, 스케일은 대각선에 값을 넣는 구조가 2D와 같다.
- 3D 회전은 세 축 중 어느 축을 기준으로 하는지에 따라 세 가지 행렬이 다르게 정의되며, 회전축의 좌표는 고정된다.
- 는 순환 순서 때문에 의 위치가 와 다르다.
- 서로 다른 축을 기준으로 한 3D 회전은 순서를 바꾸면 결과가 달라지며, 같은 축을 두 번 회전하는 경우에만 순서가 상관없다.