/////
Search
Duplicate

vector 구현

WinAPI 기반 게임에서 벡터(Vector)의 정의와 활용

1. 벡터(Vector)란 무엇인가?

1.1 벡터의 정의

벡터는 크기(Magnitude)와 방향(Direction)을 가지는 수학적 객체이다.
주로 2D 및 3D 공간에서 위치, 이동, 속도, 가속도 등을 나타내는 데 사용된다.

1.2 벡터의 구성 요소

2D 벡터: v=(x,y)
x: 가로 방향 좌표
y: 세로 방향 좌표
3D 벡터: v=(x,y,z)
z: 깊이 좌표

1.3 스칼라(Scalar)와 벡터의 차이

스칼라: 크기만 있는 값 (예: 속도, 거리).
벡터: 크기와 방향이 모두 존재 (예: 이동 방향과 속도를 동시에 표현).

2. WinAPI 게임에서 벡터의 필요성

2.1 위치와 이동

게임 내에서 객체의 위치는 벡터로 표현됩니다.
예: 플레이어의 현재 위치 p⃗=(x,y).
객체가 이동할 때는 이동 방향을 나타내는 벡터 를 추가합니다.
새로운 위치=현재 위치+이동 벡터

2.2 속도와 가속도

속도와 가속도는 모두 벡터로 표현되며, 객체의 이동이나 충돌 반응을 계산하는 데 필수적입니다. 새로운 속도=현재 속도+가속도×Δt

2.3 충돌 판정

객체 간의 충돌은 두 점 사이의 거리(벡터의 길이)를 계산하여 판단합니다. d=(x2​−x1​)2+(y2​−y1​)2​

3. 벡터의 수학적 연산

3.1 벡터 덧셈과 뺄셈

덧셈: 두 벡터의 좌표를 각각 더합니다.
v1⃗+v2⃗=(x1+x2,y1+y2)
뺄셈: 두 벡터의 좌표를 각각 뺍니다.
v1⃗−v2⃗=(x1−x2,y1−y2)

3.2 스칼라 곱

벡터의 크기를 변경합니다.
k×v⃗=(k⋅x,k⋅y)

3.3 내적(Dot Product)

두 벡터 사이의 각도를 계산하거나, 특정 방향으로의 투영 값을 구합니다.
v1⃗⋅v2⃗=x1⋅x2+y1⋅y2

3.4 단위 벡터(Normalization)

방향만 나타내는 크기가 1인 벡터를 생성합니다.

4. WinAPI에서 벡터 구현

4.1 2D 벡터 클래스 설계

WinAPI에서 벡터를 구현하기 위해, 간단한 2D 벡터 클래스를 설계한다.

5. WinAPI 게임에서 벡터 활용 예제

5.1 플레이어 이동

방향키(WASD) 입력에 따라 이동 방향을 계산하고 위치를 업데이트한다.

5.2 총알 발사

총알은 플레이어가 바라보는 방향으로 발사되며, 벡터로 궤적을 계산한다.

6. 벡터를 활용한 충돌 판정

충돌 여부는 두 점 사이의 거리를 계산하여 결정한다.
충돌 조건: 두 객체 간의 거리 ≤ 두 객체 반지름의 합.