갬장장이
[Mathematics] 25. Local vs Global Coordinate System(3D)
갬장장이
갬장장이의 코드 대장간
갬장장이
전체
오늘
어제
  • 분류 전체보기 (216)
    • 게임 연구소 (6)
    • 게임 제작 (15)
      • We need more guns (2024~) (1)
      • Rovenhell (2023) (2)
      • Geophyte (2020~2021) (5)
      • 아드레날린 러시 (2021) (2)
      • Treadmill (2019) (1)
      • 습작들 (2019~) (2)
      • 그 외 (~2018) (2)
    • mathematics (33)
      • game mathematics (30)
      • linear algebra (3)
    • networking (3)
    • computer graphics (46)
      • 3D Graphics (23)
      • DirectX (8)
      • OpenGL (13)
      • graphics theory (2)
    • game engines (10)
      • Unity (0)
      • Unreal Engine (10)
    • os (6)
      • Linux (0)
      • operating system (1)
      • multithreading, parallel co.. (5)
    • lang (34)
      • c++ (15)
      • .NET (5)
      • python (1)
      • java (3)
      • erlang, elixir (1)
      • js, ts (7)
    • software engineering (47)
      • PS (25)
      • algorithms (15)
      • data structures (2)
      • design patterns (4)
    • cs (4)
    • database (2)
      • SQL (1)
    • web (6)
      • web (3)
      • frameworks, libraries (3)
    • finance (0)
    • 음악 제작 (1)
    • life (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • [공지] 블로그 안내

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.
mathematics/game mathematics

[Mathematics] 25. Local vs Global Coordinate System(3D)

2022. 6. 23. 19:36

앞선 여러 포스트들(https://gamesmith.tistory.com/133?category=1032694, https://gamesmith.tistory.com/143?category=1032694)에서 우리는 선형변환이란 결국 어떤 벡터를 다른 좌표계로 이동시키는 것에 불과하다는 것을 배웠다. 이는 3D 환경에서도 마찬가지이다.

우리가 앞서 배운 T, R, S 모두 결국 선형사상이고, 때문에 TRS 행렬들의 곱인 Transform matrix(TRS Matrix) 또한 하나의 이동, 회전, 확대를 합쳐놓은 하나의 선형사상이다.

 

때문에 이는 하나의 좌표계에서 다른 좌표계로 점(벡터)을 이동시키는 것으로 표현이 가능하다.

반대로 (TRS)^-1을 곱해주는 것으로 해당 좌표계에서 다시 원래 좌표계로 점을 가져오는 것 또한 가능하다.

 

사실 이 내용들은 이미 다뤄왔던 내용인데, 굳이 이렇게 별도의 포스트로 작성하는 이유는 이 성질이 여러 3D 연산에서 중요하게 사용되고, 또 2D와는 본질적으로 같은 것임에도 사뭇 느낌이 다르기 때문이다.

E는 벡터가 아니라 월드 좌표 원점으로부터 코끼리의 위치까지 이동을 나타낸 이동행렬(transpose matrix)임에 주의

어떤 코끼리가 있고, 그 코끼리의 머리 위에 벼룩이 있으며 이 벼룩의 위치와 벼룩이 바라보고 있는 방향을 벼룩의 위치에 대하여 나타내고 있는 벡터 x가 있다고 하자. 즉 벼룩이 우측을 바라보고 있다면 이는 x = (1,0,0)으로 나타낼 수 있다고 하자.

 

이때, 코끼리의 월드 내에서의 위치(global coordinate)가 주어졌을 때, 벼룩의 위치와 바라보는 방향을 이 월드 내에서의 벡터로 변환하려면 어떻게 해야 할까?

 

결과부터 이야기하면, 벼룩이 바라보는 방향의 글로벌한 벡터 g는

g = E*H*F*x

로 표현할 수 있다.

 

반대로 글로벌한 벼룩의 바라보는 방향을 벼룩의 로컬 좌표계에 대해 표현하려면

x = F^-1 * H^-1 * E^-1 * g

로 표현 가능하다.

 

월드 좌표계의 원점 (0,0,0)에서 코끼리의 현재 위치까지의 이동을 나타낸 행렬(=transpose matrix)을 E라고 하자.

E라는 이동을 한 이후 H라는 이동을 해주는 것으로 코끼리의 머리의 글로벌한 위치를 나타낼 수 있다고 하자.

E, H라는 이동 이후 F라는 이동을 해주는 것으로 이번엔 코끼리의 머리에서 벼룩의 위치까지 이동할 수 있다고 하자.

 

최종적으로 우리는 월드 좌표계 원점에서 벼룩의 위치까지의 이동을 EHF를 곱해주는 것으로 표현할 수 있다.

이걸 원점을 벼룩의 위치까지 이동시켰다, 즉  벼룩의 위치를 원점으로 만들었다고 이해하면 쓰기 편하다.

저작자표시 비영리 변경금지 (새창열림)

'mathematics > game mathematics' 카테고리의 다른 글

[Mathematics] 27. 기준점을 중심으로 한 원형 회전  (0) 2022.08.07
[Mathematics] 26. Camera view transformation matrix  (0) 2022.06.23
[Mathematics] 24. Fast TR Matrix Inversion  (0) 2022.06.23
[Mathematics] 23. Eigenvectors, Eigenvalues  (0) 2022.06.06
[Mathematics] 22. Euler angle vs Matrix vs Quaternion  (0) 2022.05.28
'mathematics/game mathematics' 카테고리의 다른 글
  • [Mathematics] 27. 기준점을 중심으로 한 원형 회전
  • [Mathematics] 26. Camera view transformation matrix
  • [Mathematics] 24. Fast TR Matrix Inversion
  • [Mathematics] 23. Eigenvectors, Eigenvalues
갬장장이
갬장장이
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.