LCS(Local Coordinate System)과 GCS(Global Coordinate System)은 흔히 3차원 공간에서 물체를 표현하기 위해서 사용되는 방법입니다. 일반적으로 생각하는 3차원 공간좌표계에서 X, Y, Z축이 존재합니다. 

그림 1

그림 1을 참고하면 LCS와 GCS를 쉽게 표현하였는데요. X, Y, Z축의 3차원 좌표공간이 GCS를 표현하고 안쪽에 X', Y', Z' 축의 3차원 좌표공간이 LCS를 표현합니다. 그렇다면 LCS와 GCS가 어떻게 사용되는지 알아보도록 하겠습니다. 3차원 공간에 원기둥이 있다고 가정해보겠습니다. 

그림 2

이 원기둥은 높이가 h이고 반지름이 r이고 원기둥의 중심이 원점입니다. 이때 이 원기둥을 x축으로 회전시킨다고 생각을 하면 쉽게 상상을 할 수 있습니다. 그리고 x축으로 10만큼 y축으로 10만큼 이동한다고 생각을 할때도 쉽게 상상으로 어떤 결과를 만들어내는지 알 수 있습니다. 그런데 만약에 원기둥을 x축으로 10, y축으로 10 이동하고 x축을 기준으로 회전하고 z축으로 회전하는 동작을 계속 반복한다고 하면 어느 순간에는 이 원기둥이 어떻게 생겼고 어떻게 위치했는지 파악하기 어려운 순간이 오게 됩니다. 

이럴때 유용하게 사용될 수 있는 것이 바로 LCS와 GCS입니다. 볼링 게임을 예로 들어보겠습니다. 볼링 게임에는 볼링핀과 볼링공이 존재합니다. 그리고 경기장도 존재하겠습니다. 일단 경기장은 움직이지 않고 고정되어 있기 때문에 볼링장의 공간을 GCS로 고정합니다. 

X축 방향으로 볼링공이 굴러간다고 생각을 해보겠습니다. 이때 각 볼링핀에도 각각 좌표계가 생기게 되면 볼링공과 볼링핀의 위치나 회전을 쉽게 표현할 수 있게 됩니다. 이때의 좌표계를 LCS라고 부르게 되는 것입니다. 

이때 GCS를 기준으로 LCS를 계산하게 되면 실제 물체들의 움직이는 동작을 쉽게 계산할 수 있습니다. 볼링핀이 날아가는 괴적을 각 볼링핀의 LCS 원점으로 입력하면 볼링핀은 입력한 점을 기준으로 움직이고 볼링핀이 회전할때 x축으로 30도 y축으로 20도 z축으로 30도 회전하면서 날아간다는 계산이 나오면 각 볼링핀의 LCS의 축으로 회전을 하게 되면 모든 볼링핀들의 회전과 이동을 표현할 수 있게 됩니다. 실제로 게임을 만들거나 물체의 움직임을 표현하는 시뮬레이션에서는 각 물체들의 LCS를 계산하므로 움직임을 표현할 수 있습니다. 또 각 물체들의 움직임을 각각 병렬로 계산이 가능하기 때문에 빠르게 처리할 수 있습니다. 물론 여기서 각 물체끼리 충돌하는 것을 포함한다면 더 복잡한 기법들이 포함되지만 현재는 LCS와 GCS의 개념을 파악하기 위한 내용이기 때문에 충돌에 대한 이야기는 하지 않도록 하겠습니다. 

실제 각 LCS와 GCS는 수학적으로 회전이나 이동하는 행렬을 계산하는 방식으로 만들어지기 때문에 기본적인 수학적 내용을 알아둘 필요가 있습니다. 특히 회전행렬과 이동행렬과 같은 내용이 중요합니다. 

이와 관련된 내용은 다른 포스팅에서 다루도록 하겠습니다. 

+ Recent posts