방준선

64일차(4-04) 벡터 재정리

쥬신게임개발학원/3. DirectX SDK의 기초 : DirectX SDK

벡터 정리(코딩 기준)

벡터: 힘(화살표의 길이)과 방향을 가지고 있는 데이터(방향 벡터)

최소2개 최대 4개

2개: X,Y 축 선상의 힘과 방향

4개: 3차원(x,y,z) + 위치인지 방향인지(w)

힘과 방향: 원점(0,0)부터 시작

화살표가 어디에 있든 길이와 방향이 같으면 모두 같은 벡터


위치벡터: 단순히 객체의 위치를 표현하기 위한 2,3차원 상에서 사용하기 위해서 사용함

벡터의 길이: 피타고라스의 정의 루트(x 밑변 제곱 + y 높이 제곱 + z 깊이 제곱)


단위 벡터: 벡터의 길이가 1인 벡터
Normalize(단위 벡터 화): 벡터의 각 요소 xyz를 벡터의 길이로 나눔

->방향을 유지한채 길이를 1로 만듦

->초기화(0, NULL)이 아님!->단순한 위치 벡터가 됨


벡터의 덧셈: 객체의 위치가 점으로 표현되 있으면 이 위치에다 이동하고 싶은 방향 벡터를 더함 + 이동할 거리

->해당 방향으로 움직임


벡터의 뺄셈: 방향 벡터

A-B(B가 A를 바라봄) B-A(A가 B를 바라봄)

단위 벡터화 한 후 상수를 곱하면 방향은 유지한 채 한 틱당 해당 상수만큼 움직인다

-> 상대방을 따라가게 하기 위해 사용


벡터의 내적: 2개의 방향 벡터 A벡터 ‘ B벡터

위치 벡터가 아님!

결과: 하나의 벡터 A를 또 다른 벡터위에 수직으로 투영시킨 벡터 A`의 길이와 투영받은 벡터 B의 길이를 곱함

= ||A`|| * ||B|| = ||A|| * 코사인세타 * ||B|| -> 단위 벡터화 해서 A와 B의 길이는 1이 됨

-> == 1 * 1 * 코사인세타 == 각 원소끼리 곱하고 더한 것

코사인 세타 : 밑변/빗변 ||A|| / ||A`||

||A`|| = ||A|| * 코사인세타

응용: 두 벡터 사이의 각도를 구할 때


면접 질문:

인성(대학 때 생활..)

기술(이터레이터로 stl로 이레이즈할때 주의해야 할 사항)


벡터의 외적 : A벡터 x B벡터

두 벡터에 모두 수직인 벡터를 구한다

3D가서 회전축을 기준으로 할 때(비행 슈팅게임)


포폴

얼마나 게임답게 만들었는가?

이 게임의 시작과 끝을 정확하게 맺었는가?

-> 단순한 테스트 프로젝트가 아닌

컨테츠의 양