갬장장이
'mathematics' 카테고리의 글 목록

mathematics

mathematics/game mathematics

[Mathematics] 28. 회전목마

바로 이전 포스트에서 우리는 회전목마와 상자의 운동을 행렬곱으로 표현해보았다. 그러나 해당 방식은 물체가 회전목마에서 닿았다 떨어졌다 하는 상황에서 동적으로 변경해줄 수 없다는 문제가 있다. 즉 게임 내의 회전하는 원판 장애물 등으로는 활용할 수 없다는 이야기다. 이번 포스트에서는 Move parents라는 개념을 사용해 이를 개선해보자. 사실 지난 포스트에서 다룬 회전운동을 표현하는 수학적 원리는 전부 동일하다. 단 이제부터는 각 오브젝트가 Move parents를 가질 수 있고, 만약 Move parents가 있을 경우 이 오브젝트의 transform은 Global transform 대신 Local transform을 통해 표현한다. 이를 회전목마 운동에 대입시켜보자. 우선 회전목마는 move par..

mathematics/linear algebra

[선형대수] Matrix layout - Mathematics vs Graphics

Matrix Layouts, DirectX and OpenGL When reading about computer graphics, you invariably run into the mention of the Matrix datatype. Typically, this is a 4x4 matrix of floating-point values, used to perform affine transforms for graphics (scaling, rotation, translation, sometimes shearing). However, there are at least two different conventions for how to apply matrices to the vectors (vertices a..

mathematics/game mathematics

[Mathematics] 27. 기준점을 중심으로 한 원형 회전

지난 포스트에 이어 우리가 그동안 배운 행렬 연산을 실제로 어떤 식으로 활용할 수 있는지 다른 예시도 살펴보자. 회전목마 같이 회전하는 원판 위에 어떤 물체가 놓여 있을 때, 회전목마가 S(=회전행렬) 만큼 회전했을 경우 이 물체의 위치는 초기 위치 B에서 어떻게 표현할 수 있을까? 우선 회전목마의 Transform부터 표현해보자. 우리는 Transform을 TRS 중 S를 생략한 TR matrix로 표현가능하며, 회전목마의 회전하기 전 TR Matrix를 M이라고 하자. 또 y축에 대해 일정 각도만큼 회전운동을 하는 행위를 나타낸 회전행렬 S가 있다고 하자. 이때 회전 후 Transform인 M'은 단순히 SM으로 표현할 수 없는데, 이는 M이 기준점에 있다는 보장이 없으므로 S만큼 회전했을 때 M의 ..

mathematics/game mathematics

[Mathematics] 26. Camera view transformation matrix

24, 25번 포스트의 내용을 먼저 숙지하는 것을 권장합니다. 카메라가 월드 좌표계의 원점에 위치하고, 사진과 같이 -z 축을 바라본다고 가정하자. 또 월드 상에 어떤 월드 좌표계상의 점 g가 존재한다고 가정하자. 이 때 카메라가 원점을 벗어나 이리저리 이동하고 회전한다면 카메라는 점 g를 어떻게 그려야 할까? 사실 카메라가 어떤 점을 그리기 위해 필요한 정보는 해당 점이 카메라 자신을 중심으로 한 상대좌표계에서 어디에 위치하고 있는지에 대한 정보뿐이다. 즉, 점 g의 좌표를 카메라의 상대좌표계로 변환한다면 우리는 점 g를 카메라에서 그려낼 수 있다. (카메라가 물체를 2D 평면에 그리는 세부적인 원리는 여기서는 무시해도 좋다.) 카메라의 공간 정보는 TR Matrix로 표현할 수 있다. (Scaling..

mathematics/game mathematics

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

앞선 여러 포스트들(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을 곱해주는 것으로 해당 좌표계에서 다시 원래 좌표계로 점..

mathematics/game mathematics

[Mathematics] 24. Fast TR Matrix Inversion

TRS Matrix에서 Scaling Matrix를 뺀 TR Matrix의 역행렬은 T^-1 * R^-1을 해주지 않더라도 아주 빠르게 구할 수 있다. 사진에서 보듯이, (TR)^-1 은 우측 하단 노란색 M^-1의 형태처럼 행렬 내의 부분행렬들로 표현이 가능하며, 때문에 굳이 T와 R을 각각 Inverse해준 뒤 이를 곱해줄 필요 없이 한번에 M^-1을 구할 수 있다. 즉 TR Matrix 역행렬 구하기는 일종의 공식화가 가능하다. * R^-1과 T^-1을 역행렬 공식을 이용해 구한 후 이를 곱해주면 M^-1이 나오는 걸 확인할 수 있다. ** 일반적으로 Scaling Matrix는 쓸 일이 많이 없다. 때문에 TRS 대신 사실상 TR matrix만 사용할 일이 많다.

mathematics/game mathematics

[Mathematics] 23. Eigenvectors, Eigenvalues

예전 포스트에서 우리는 선형사상/선형변환의 본질적인 의미는 좌표축을 변경하는 것이라는 것을 다뤘다. 즉 선형사상을 했을 때 벡터가 변하는 이유, 즉 점이 이동하는 이유는 기준이 되는 좌표축이 변했기 때문이다. 그런데 만약 어떤 벡터/점이 선형변환을 했음에도(=기준이 되는 좌표축이 변했는데도) 이전 위치와 동일 선상에 있다면(=원래 벡터의 span 직선 위에 있다면) 해당 좌표는 eigenvector(고유벡터)이다. 이때 동일 선상에 있더라도 벡터의 크기는 변할 수 있는데, 변화 전후의 벡터는 동일직선상에 있으므로 상수배로 표현할 수 있다. 이 상수값을 eigenvalue(고유값)이라고 하며, 기호로는 람다(λ)로 나타낸다. 고유벡터들은 이 직선 위의 무수히 많은 모든 점(=벡터)들이며, 이러한 직선은 여..

mathematics/linear algebra

[선형대수] 고유값, 고유벡터의 계산

어떤 행렬 A [[1 2][3 4]]가 있다. 이 행렬을 선형사상, 즉 함수로 보자. 2x2 행렬이므로 이 선형사상은 vec2를 vec2로 바꾸는 함수이다. 이 함수를 f(x)라고 해보자. f(x1,x2) = y1, y2이다. 이를 평면 상에 나타내면 다음과 같다. 이때 이 선형사상에 의한 점의 이동을 더 쉽게 나타내기 위해 새로운 좌표축을 그려 해당 좌표축에서 이동을 나타낼 수 있다. 이렇게 같은 이동을 새 좌표축인 x'과 y'축에 대해 나타내면 이 선형사상 f(x) = Ax 은 단순히 벡터에 상수배 해주는 행위로 쉽게 나타낼 수 있다. (x'축으로 2배 커지고, y'축으로 3배 커졌다) 이 상수를 람다로 나타내면 최종적으로 우리의 선형사상은 다음과 같이 나타낼 수 있다. Ax = λx 이때 이 상수,..