on my way

3D 게임 프로그래밍 기초 수학 2 :: 벡터의 뺄셈, 벡터와 스칼라의 곱셈 본문

Computer Science/IT MATH

3D 게임 프로그래밍 기초 수학 2 :: 벡터의 뺄셈, 벡터와 스칼라의 곱셈

wingbeat 2021. 9. 25. 23:20
반응형

벡터의 뺄셈

뺄셈을 할 때는 수식에서 그대로 -로 표현하여 덧셈하면 된다.

벡터에 -를 붙인다는 것은, 크기는 그대로 두변서 방향만 반대로 바꾸는 것이다.

즉 B-A는 B+(-A)이다.

벡터의 덧셈이란 시작점의 꼬리에서 끝점의 머리까지 잇는 것이다.

즉, 뺄셈도 방향만 바꾸어 그대로 적용하면 위와같은 C 벡터를 얻을 수 있다.

 

또한 오른쪽 그림처럼 두 빨간 벡터는 크기와 방향이 같기 때문에 완전히 동일한 벡터이다.

 

 

따라서 벡터의 뺄셈은 위처럼

특정 위치에서 다른 위치를 향하는 벡터를 구할 때 사용하면

쉽게 해당 벡터를 구할 수 있다.

 

게임 프로그래밍에서는 캐릭터를 특정 장소로 움직이도록 만들 때 사용한다.

예를 들어 플레이어를 추적하는 몬스터를 구현할 때

몬스터가 플레이어의 현재 위치를 향해 매 프레임 이동하는 로직으로 구상할 수 있다.

 

그렇다면 몬스터의 x, y좌표에 어떤 계산을 해야할까? 

이 때, 몬스터의 이동 방향을 구하는데 벡터의 뺄셈을 활용할 수 있다.

플레이어를 향하는 방향 = 플레이어의 위치 - 몬스터의 위치

몬스터의 위치와 플레이어의 위치을 벡터로 간주한다면, 벡터의 뺄셈을 그대로 적용할 수 있다.

계산된 결과는 몬스터에서 플레이어를 잇는 벡터가 된다.

이 벡터를 따라서 몬스터를 움직이게 하면 된다.

 

TIP🌟

실제 코드를 구현할 때는 이 벡터를 단위 벡터로 만든 뒤,

몬스터의 이동 속력을 곱하여, 최종적으로 속도 벡터를 얻는 과정이 필요하다.

 

방향 벡터 = 플레이어의 현재 위치 – 몬스터의 현재 위치
방향 벡터를 단위 벡터로 만들고 이동 속력을 곱해 속도 벡터를 계산
몬스터의 새로운 위치 = 몬스터의 현재 위치 + 시간 * 속도 벡터

 

 

벡터와 스칼라의 곱셈

스칼라란 일반적인 수이다.

A=[5,0]인 벡터가 있을 때, 스칼라 d를 곱해준다면

A*d=[5,0]*2=[10,0]이다.

 

게임 프로그래밍에서는 방향 벡터에 속력을 곱해서

속도 벡터를 만드는 데 사용할 수 있다.

 

 


벡터의 뺄셈 정리

 

1. 뒤에 있는 벡터의 방향을 반대로 바꾼다. 

B-A 라면 A벡터의 방향을 반대로 바꾼다. 

방향을 바꾸는 것은 길이는 그대로 두고 화살표가 가리키는 곳만 반대로 만들어 주는 것을 의미한다.

 

2. 두 벡터를 덧셈 규칙에 맞게 꼬리에서 머리로 이어준다.

 

3. 벡터의 뺄셈은 한 위치에서 다른 위치로 향하는 벡터를 만들 때 사용할 수 있다.

 

 

 

 

출처: http://lab.gamecodi.com/board/zboard.php?id=GAMECODILAB_Lecture_series&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=123

 

3D 기초 수학 강좌 - 3. 벡터의 밸셈, 벡터와 스칼라의 곱셈

 

lab.gamecodi.com

 

 

반응형