새소식

프로그래밍/수학

[Math] 벡터(Vector)에 대해

  • -

벡터에 대한 이론을 가르칠때 가장 많이 나오는 예는
속력 / 속도 가 있습니다.

'100km/h 의 힘으로 달리고 있다' 라는 예시와
'100km/h 의 힘으로 동쪽을 향해 달리고 있다'는 확연한 차이가 존재합니다.

 이때, 속력은 전자와 같이 '크기'만을 내포하는 녀석이고,
속도는 '크기'와 함께 '방향'도 함께 내포하는 녀석입니다.

동시에 속력은 '스칼라'라고 언급되기도 하며,
속도는 벡터(Vector)라고 언급되기도 합니다.

벡터를 그림으로 표현하고자 할 때엔 화살표가 가장 인상적입니다.

어떠한 화살표를 그리면
화살표의 길이가 크기가 되고,
화살표가 향하는 방향이 말그대로 방향이 됩니다.

화살표 하나가 벡터를 지니는 셈입니다.

여기에 좀더 확실한 정보를 담기 위해서 다음과 같이 표현을 합니다.

  다음과 같이 꼭지점에 명칭을 붙이고,
A에서 B로 향하는 벡터다 라고 표현합니다.
수식에는 위와 같이 (형광펜) 표현합니다.

위와 같이 화살표만 붙이면 방향을, 여기에 절대값을 표시하면 크기를 나타내는 기호가 됩니다.

이때, A를 시작하는 점이라 하여 시점, B를 도착하는 점이라 하여 종점이라고 표현합니다.

이 정보는 아래의 유튜브 영상을 참고하였습니다.


https://youtu.be/g3n1VxiXgrE

그럼 게임에서 벡터는 무슨 의미를 지닐까요?

게임에서 캐릭터가 이동하는 모습을 보면
캐릭터가 향하는 방향, 이동 속도를 알 수 있습니다.
이때, 게임 엔진을 다루는 프로그래머는 Vector 라는 데이터를 사용하여 처리합니다.

앞서 말한 벡터는 방향, 속력만을 의미한다고 했으나,
3D 공간에서의 위치를 표현할 때에도 벡터를 사용합니다.

예를 들어보겠습니다.
게임속 캐릭터가 마을에 위치하고 있습니다.
마을의 한 가운데를 0,0이라고 하고, 캐릭터가 서있는 위치는 x,y 라고 합니다.

이때, 게임 엔진에서는 간단하게 x,y 라는 값만 보여주고 있지만
자세하게 들여다보면 시점인 0,0에서 종점인 x,y에 캐릭터가 위치하다는 걸 내포하고 있습니다.

 

두개의 벡터 a, b가 있다고 합시다.
a 와 b를 더한다고 했을 때, 각각의 벡터가 가지고 있는 x, y를 각각 더하여 연산합니다.
이를 통해 새로운 벡터 c가 등장합니다.

반대로 빼면 어떻게 될까요?
a 벡터에서 b 벡터를 뺀다고 함은
a벡터에 -b벡터를 더하는 것과 같습니다.

새로 등장한 -b와 a사이를 가로지르는 벡터를 상상한다면
그것이 바로 c벡터가 됩니다.

추가로, 벡터는 방향과 크기를 지니는 값이라고 위에서 언급했습니다.
따라서 아래 그림에서 보여드리는 두개의 c벡터는 같은 방향, 같은 크기이기 때문에
같은 c벡터이다 라고 할 수 있습니다.

 

게임 엔진 내에서 Normalize 라고 하는 함수를 본적이 있을겁니다.

단위화(Normalize) 란 벡터의 길이(크기)를 1로 만듬으로써
순수한 방향만을 내포하고 있는 벡터를 계산하는 함수입니다.

어떤 벡터이든 크기가 1이면 해당 벡터는 방향에 대한 정보를 가지는 벡터로써
사용이 됩니다.

Magnitude 라는 함수도 존재합니다.
Normalize 와는 반대 개념으로 크기를 구하는 함수입니다.
유감스럽게도, 저는 사용해본적이 없어서 더 이상의 설명이 불가합니다.

위 내용은 아래의 유튜브 영상을 참고하여 적었습니다.

youtu.be/jmh67nvbcrM

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.