벡터는 방향+크기로 이루어져 있습니다.

게임에서 방향은 매우 소중합니다. 기본적으로 캐릭터가 이동을 하기 위해선 방향이 필요하기 때문이죠. 방향을 알기 위해 벡터를 알아보겠습니다.



★Vector 의 정의

Vector (벡터)  : 크기 + 방향에 의해 결정되는 양

Scalar (스칼라) : 벡터의 크기에 의해서만 결정되는 양


시점 (P) : 벡터가 시작되는 화살표의 꼬리

종점 (Q) : 벡터가 마지막 부분인 화살표의 머리

크기(P와 Q사이의 거리) : 방향과 상관없는 화살표의 길이


★Vector 의 크기

이미지 출처 : https://www.slideshare.net/QuentinKang/1-52920181

3차원 벡터의 크기
v = (vx, vy, vz)
||v|| = v2
x + v2
y + v2
z
vy
l1
l
l1
vx
vz
vy
(vx, vy, vz)
l2
1 = v2
x + v2
z
l2
= l2
1 + v2
...


벡터의 크기는 |V| 로 표기하며

V = (x,y,z)라 하면 피타고라스의 증명에 의하여

|V| = √x^2 + y^2  + z^2 이 됩니다



★Unit Vector (단위 벡터)

단위 벡터 : 벡터의 크기가 1인 벡터

벡터의 크기를 1로 만드는 행위를 Normalize(정규화) 라고 합니다.

 Uv = V / |V| 입니다.



★Vector 의 사칙 연산

덧셈 : 각각의 성분을 더해주면 됩니다. 

스칼라곱 : 각각의 성분에 스칼라를 곱하면  됩니다.

뺄셈 :  각각 성분을 빼주시면 됩니다.




★Vector 의 내적 (Dot)

내적(Dot product,Inner product,Scalar product)라고 합니다.

A ● B = A.x * B.x + A.y * B.y + A.z * B.z = |A||B|cosθ 입니다.


(증명은 생략하겠습니다.)


Vector에서 내적은 두 벡터의 사이각을 구할수 있기 때문에 매우 중요합니다. ★★★★★★★★★

A.x * B.x + A.y * B.y + A.z * B.z / |A||B| = cosθ 로

벡터 A와 B가 단위 벡터라면

A.x * B.x + A.y * B.y + A.z * B.z = cosθ 로 빠르게 각도를 구할 수 있습니다.

그래서 게임에서 캐릭터클래스가 방향을 가지고 있다면 주로 단위벡터로 방향만을 가지고 있습니다.


이미지 출처 : http://blog.naver.com/PostView.nhn?blogId=push1104&logNo=220863257036&parentCategoryNo=&categoryNo=20&viewDate=&isShowPopularPosts=false&from=postView


cos그래프에 대한 이미지 검색결과

A ● B > 0 이면 예각

A ● B = 0 이면 직각

A ● B < 0 이면 둔각 이라는 것을 알수 있습니다.


또한 내적으로 빛의 계산을 할 수 있으며 ( 이번 파트에는 다루지 않고 넘어 가겠습니다.)

투영 벡터를 구할 수 있습니다.



★벡터의 외적 (Cross)

벡터의 외적 : 두 벡터 모두에 수직인 벡터


벡터의 외적으로 법선 벡터를 구하여 평면의 앞과 뒤를 구분할 수 있습니다.


'프로그래밍 > 게임수학' 카테고리의 다른 글

2.Matrix (행렬)  (0) 2018.01.08
Posted by Dongkey
,