🧭 주제

좌표계 변환 행렬 완전 정복 – A 좌표계에서 B 좌표계로의 변환 원리, 수식 도출, 행렬 구성, 위치/방향 벡터의 의미까지


📚 개념

좌표계 변환(Coordinate Transformation)어떤 점이나 벡터가 한 좌표계(A) 기준에서 정의되어 있을 때, 이를 다른 좌표계(B) 기준에서 어떻게 표현할지를 결정하는 과정입니다.

예를 들어, 점 M이 A 좌표계에서 (x, y, z)라는 좌표를 갖고 있다면, B 좌표계에서 같은 점 M다른 위치 (X, Y, Z)로 표현됩니다.
이 두 좌표계 간의 관계를 수학적으로 정리한 것이 좌표계 변환 행렬이며, 기준 벡터(u, v, w)기준점의 위치(Qx, Qy, Qz)를 기반으로 구성됩니다.

이는 3D 그래픽스에서 다음의 좌표계 변환 과정에 반드시 사용됩니다:

로컬(Local) → 월드(World) → 뷰(View) → 투영(Projection) → 스크린(Screen)

각 단계마다 행렬 곱을 통해 변환이 수행되며, 이 전체 파이프라인이 제대로 동작하기 위해 좌표계 변환의 원리를 정확히 이해해야 합니다.


🧾 용어 정리

  • AM: A 좌표계 기준에서의 M 벡터
  • BM: B 좌표계 기준에서의 M 벡터 → 우리가 구하고 싶은 값
  • AB, BA: 두 기준점 간의 위치 벡터 (A→B 또는 B→A)
  • u, v, w: A 좌표계의 단위 벡터
  • U, V, W: B 좌표계의 단위 벡터
  • Qx, Qy, Qz: B 기준에서 본 A의 기준점 위치
  • [x y z 1]: 동차 좌표계 상의 위치 벡터
  • [x y z 0]: 동차 좌표계 상의 방향 벡터

💻 코드 분석 (공식 및 수식 포함)


① 좌표계 변환의 기하학적 기반

A 기준에서 점 M:

AM = x·u + y·v + z·w

B 기준에서 점 M:

BM = X·U + Y·V + Z·W

두 좌표계에서 같은 점을 다르게 표현하고 있으며, 우리가 원하는 것은 B 기준의 표현(BM)입니다.


② 수식 도출 과정

AM은 AB + BM 이므로:

AM = AB + BM → BM = AM - AB = AM + BA

하지만 이 벡터 표현을 B 좌표계 기준으로 바꾸려면, 단위 벡터(u, v, w)B 좌표계 기준의 단위 벡터(U, V, W)로 다시 표현해야 합니다.

u = ux·U + uy·V + uz·W
v = vx·U + vy·V + vz·W
w = wx·U + wy·V + wz·W

이를 이용해 AM 전체를 B 기준으로 정리하면:

AM = x·u + y·v + z·w
   = x·(ux·U + uy·V + uz·W) +
     y·(vx·U + vy·V + vz·W) +
     z·(wx·U + wy·V + wz·W)

   = (xux + yvx + zwx)·U +
     (xuy + yvy + zwy)·V +
     (xuz + yvz + zwz)·W

BM은 여기에 A 기준점의 위치(BA = Qx, Qy, Qz)를 더해줌으로써 완성:

BM = (xux + yvx + zwx + Qx)·U +
     (xuy + yvy + zwy + Qy)·V +
     (xuz + yvz + zwz + Qz)·W

③ 최종 행렬 구성

위 결과를 행렬로 정리하면:

입력 벡터 (A 기준):

v = [x y z 1]

변환 행렬 (B 기준으로 A를 표현):

M =
[ ux  uy  uz  0
  vx  vy  vz  0
  wx  wy  wz  0
  Qx  Qy  Qz  1 ]

결과:

V = v × M = [X Y Z 1]

이 변환은 A 기준에서 정의된 점 v를 B 기준으로 표현한 점 V를 반환합니다.


④ 위치 벡터와 방향 벡터의 차이

📍 위치 벡터: [x y z 1]

  • 마지막 성분 1
  • 이동(Translation), 회전(Rotation), 스케일(Scale) 모두 영향을 받음
  • 실제 공간상의 점 위치를 표현

📍 방향 벡터: [x y z 0]

  • 마지막 성분 0
  • 이동 성분(Qx, Qy, Qz)이 무시됨
  • 방향만 변환
  • 법선 벡터, 앞 방향, Up 방향 등을 표현할 때 사용

✅ 즉, 1은 위치를 의미하고, 0은 방향을 의미함


⑤ 행렬 내 각 행의 의미

  • 1행: A 기준의 x축(u)을 B 기준에서 본 표현 → Right
  • 2행: A 기준의 y축(v)를 B 기준에서 본 표현 → Up
  • 3행: A 기준의 z축(w)을 B 기준에서 본 표현 → Look
  • 4행: A 원점을 B 기준에서 본 위치 → Translation

⑥ 그래픽스에서의 실전 응용

  • 좌표계 변환은 로컬 → 월드 → 뷰 → 프로젝션 → 스크린으로 이어짐
  • 게임 오브젝트의 위치는 4행(Qx, Qy, Qz)에서 확인
  • 오브젝트의 방향은 1~3행의 각 축 벡터에서 확인 (Right, Up, Forward)
  • 뷰 행렬을 구성할 때도 카메라의 기준 벡터와 위치를 이용해 이와 동일한 방식으로 구성

🎯 핵심 요약

  • 좌표계 변환은 다른 기준점과 축을 기준으로 같은 점을 재정의하는 것
  • 변환 행렬은 단위 벡터 u, v, w를 새로운 기준으로 표현한 3x3 회전 성분과, 기준점 위치(Qx, Qy, Qz)를 포함한 4x4 형태
  • [x y z 1]위치 벡터로 모든 변환(SRT)이 적용됨
  • [x y z 0]방향 벡터로 이동 성분 제외한 변환만 적용
  • 1~3행: 회전 정보, 4행: 위치 정보
  • 모든 3D 그래픽스 파이프라인에서 필수적으로 사용되는 구조
  • 실전에서의 좌표계 변환은 행렬 곱 연산 하나로 해결 가능

profile
李家네_공부방

0개의 댓글