A. 벡터
1. 벡터의 기초
a. 스칼라와 벡터
1) 스칼라 : 🌟 고정되어 변하지 않는 값

2) 벡터 : 크기와 방향을 가지고 있음

벡터는 시작점이 없고 크기+방향만 가지고 있음
중력, 바람 등 방향을 나타내야하면 거의 벡터를 사용함
항상 목적지에서 시작점을빼면 값이 나온다!
b. 벡터의 특징
1) 벡터 곱셈

2) 벡터끼리의 덧셈과 뺄셈


c. 벡터의 법칙
1) 교환법칙

2) 결합법칙

d. 벡터의 크기 구하기


위에서 Vab는 5였는데 이 5의 값을 1로 만든다는 소리
즉, 방향만 남기고 싶은 것
Vab를 x라고 한다면, x를 1로 만들기 위해서는 1/x를 곱해야 함
즉, 정규화를 하면 원래 가지고 있던 Vab값에 1/x을 각 x, y값에 곱해준것과 같음
💙 사용할 때
크기는 플레이어끼리 거리를 계산할 때 사용
정규화는 방향은 유지한채 길이만 바꾸고 싶을 때 사용함 (길이는 대부분 플레이어의 속도에 따라 달라짐)
e. 벡터의 용도(게임)

2. 게임에 벡터 더하기
미사일에 유도탄을 넣어서 몬스터를 알아서 따라가는 기능을 구현
a. 벡터 생성하기

크기와 단위벡터 등 정보들을 구하는걸 매번 계산하기 그러니 각 기능들을 추가적으로 넣어줌




lengthSquared() 를 다른 툴에서도 기본 제공을 하는데
이유는 루트가 계산비용이 비싸서 씌우지 않은 버전을 제공하는 것!

b. 미사일 유도탄으로 변경하기
1초정도 지나고 유도 미사일이 등장
유도탄을 발사하려면 먼저 몬스터를 찾아야 함



c. 생포인터의 문제점
특히 위 코드에서는 포인터를 타게팅으로 가지고 있을때의 문제점이 있음
위에선 여러개의 미사일들이 동일한 타게팅을 가지고 있음




💥 만약에 날아간 부분에 다른 메모리가 들어오게 되면 메모리 오염이 일어나면서 크러쉬가 나게됨
해결방법 1) 스마트 포인터 : 바로 삭제되지 않으니 메모리 오염 문제에서 벗어남
해결방법 2) 오브젝트의 ID

오브젝트마다 배정된 ID를 가지고 오브젝트 매니저에서 ID로 객체를 찾아서 작업
d. 충돌처리 삼각함수에서 벡터로 변경하기

[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버 -
어디부터 시작할지 막막한 게임 프로그래밍 입문자를 위한 All-In-One 커리큘럼입니다. C++, 자료구조/알고리즘, STL, 게임 수학, Windows API, 게임 서버 입문으로 이어지는 알찬 커리큘럼으로 게임 프
www.inflearn.com
'컴퓨터 그래픽스 : 수학 > 게임 수학' 카테고리의 다른 글
[게임 프로그래머 입문 올인원] 게임수학 : 포트리스 모작 #1 (99강) (0) | 2024.04.15 |
---|---|
[게임 프로그래머 입문 올인원] 게임수학 : 역삼각함수 (98강) (0) | 2024.04.11 |
[게임 프로그래머 입문 올인원] 게임수학 : 외적 (97강) (0) | 2024.04.11 |
[게임 프로그래머 입문 올인원] 게임수학 : 내적 (96강) (0) | 2024.04.11 |
[게임 프로그래머 입문 올인원] 게임 수학 : 삼각함수와 포신 구현하기 (94강) (0) | 2024.04.10 |