지난 2차원 직교좌표계에서 이동과 회전에 대해서 어떻게 움직이는지에 대해서 알아보았습니다. 관련 포스팅은 아래를 참고하시면 보실 수 있습니다. 그리고 오늘은 3차원 공간에서 이동행렬과 회전행렬에 대해서 알아보도록 하겠습니다. 여기서 말하는 공간은 유클리드 공간을 의미합니다.
https://math-development-geometry.tistory.com/50
우선 이동행렬에 대해서 이야기를 하고 회전행렬은 X축, Y축, Z축에 대한 회전을 알아보도록 하겠습니다. 그리고 나중에 시간이 된다면 임의의 축에 대한 회전도 알아보도록 하겠습니다.
1. 이동행렬 (Translate Matrix)
이동행렬의 기본은 2차원 직교좌표계와 같이 점을 기준으로 움직인다고 생각하면 됩니다. 3차원 공간이기 때문에 점은 X축, Y축, Z축 이렇게 3가지 방향으로 움직일 수 있습니다. 이때 움직이는 방향의 값을 각각 Tx, Ty, Tz 라고 하면 점 (0, 0, 0)은 (Tx, Ty, Tz)로 이동하게 됩니다. 이를 행렬로 표현할 수 있습니다. 이때 사용하는 행렬은 4 by 4 행렬이고 이는 열과 행이 4개의 원소로 되어있습니다. 그리고 곱하는 점은 (x, y, z, 1) 인 벡터로 표현하게 됩니다.
행렬로 이렇게 표현할 수 있고 여기서 Tx, Ty, Tz는 각각 곱하는 점의 X, Y, Z와 더해지게 됩니다. 실제 이 행렬을 M이라고 하고, 이동하기 전의 점을 벡터로 표현한 것을 A라고 하고 결과를 B라고 하면
B = MA
가 성립하게 됩니다. 따라서 B는 (X + Tx, Y + Ty, Z + Tz, 1) , A는 (X, Y, Z, 1)이 됩니다.
2. 회전행렬 (Rotation Matrix)
회전행렬은 일반적으로 X, Y, Z축에 대해서 회전을 하는 행렬을 이용해서 임의의 축을 기준으로 회전하는 행렬까지 확장하게 됩니다. 우선 이번 포스팅에서는 각 축에 대해서 회전하는 행렬에 대해서 알아보도록 하겠습니다. 회전행렬도 기존의 이동행렬과 마찬가지로 점을 기준으로 회전하는 것입니다. 점이 회전되면 모든 도형을 회전할 수 있습니다.
1) X축
X축을 기준으로 회전하는 행렬은 아래와 같습니다.
해당 행렬을 M이라고 하고 회전하기 전의 점을 B 회전 이후 점을 A라고 하면 A = MB 라고 표현할 수 있습니다. 이때 행렬을 곱하면 B 벡터의 X좌표는 1을 곱하기 때문에 변하지 않습니다. 그리고 나머지 Y축 Z축 좌표는 기존의 2차원 직교좌표계와 같은 방법으로 회전을 하는 것입니다.
2) Y축
Y축을 기준으로 회전하는 행렬은 아래와 같습니다.
Y축을 기준으로 회전하는 행렬은 Y좌표에 1을 곱하기 때문에 변하지 않고 X축 Z축이 변하게 됩니다.
3) Z축
Z축을 기준으로 회전하는 행렬은 아래와 같습니다.
Z축을 기준으로 회전하는 행렬은 Z좌표에 1을 곱하기 때문에 변하지 않고 X축 Y축이 변하게 되는 것입니다. 이렇게 원리를 파악하게 되면 쉽게 행렬을 기억할 수 있습니다. 다음에는 이 3가지 행렬을 이용하여 임의의 축에 대해서 회전하는 방법에 대해서 이야기하도록 하겠습니다.
'컴퓨터와 기하학' 카테고리의 다른 글
행렬 연산 - 01. 덧셈, 뺄셈, 곱셈, 스칼라 (0) | 2019.07.26 |
---|---|
행렬의 기본 정리 - 행렬의 종류 (0) | 2019.07.25 |
행렬을 이용한 이동, 회전, 스케일 (Translate, Rotate, Scale) (0) | 2019.07.23 |
LCS(Local Coordinate System) - GCS(Global Coordinate System) (0) | 2019.07.22 |
원(Circle)의 방정식과 3차원으로 확장 (0) | 2019.07.20 |