본문 바로가기
DirectX 12/Vector & Matrix

[DirectX12 - Vector & Matrix] Chapter 02. 벡터

by song.ift 2023. 6. 30.

스칼라 : 크기와 방향을 가지는 벡터에 대비하는 개념으로, 크기만 있고 방향을 가지지 않는 양을 말한다.
단위벡터 : 단위 길이 (1)를 갖는 모든 벡터

정규화(노멀라이즈) : 단위벡터를 만드는 일종의 함수

기저벡터 : 벡터 공간 V의 basis는 V라는 공간을 채울 수 있는, 선형 관계에 있지 않은 벡터들의 모음이다. 즉, 서로 독립인 벡터들을 의미한다.


 


벡터는 (크기)와 (방향) 만을 가진다. = 일반적으로 기하 벡터 라 한다.
벡터가 기본적으로 알고있는 의미는 위의 의미가 맞긴한데, 게임에서 사용할 떄는 다른 이걸 다른 용도로 더 활용을 한다.
벡터를 사용하는 방법이 두 가지라고 보면 된다. 하나는 위에 말한 기하 벡터.

그리고 말한 한 가지는 어떤 물체의 좌표다.
벡터는 x, y, z로 이루어져 있다. 그래서 위치를 나타내는 용도로 사용할 수 있다.
"위치 벡터". 크기와 방향을 가지는 벡터로 사용안한다. 좌표의 용도로만.
그냥 구조체만 사용한다는 방법임.

동일한 벡터라도 어떻게 사용하냐에 따라 의미가 달라진다.

 



벡터의 내적

내적은 . 으로 표시되고 수학에선 곱셈으로 볼 수 있지만, 곱셉이 아니고 내적이다.
내적의 결과값은 스칼라
내적안 a * cos(각도). 원래 a * b * cos(각도) 인데 b를 단위벡터로 만들면 제외가능

내적의 방법은 두가지 표현식으로 풀이하면
1. (벡터)|a| * (벡터)|b| * cos(각도)
2. axbx + ayby
결론으로 도출하면 a * b(단위백터로 변환) * cos(각도) = a * cos(각도)

내적의 결과값 스칼라는 각도(예각, 둔각)에 따라 결정되게 된다.
양수(예각)인지 음수(둔각)인지에 따라 활용한다면, 플레이어로부터 적의 위치가 어느 각도에 있는지 판단해서 이벤트를 처리가능.
각도를 알아내는 방법중에 코사인과 사인 등 삼각함수방법들은 의외로 무거워서 내적으로 구하는게 편리하고 좋다.

결국에는 내적을 이용하면 내적 자체는 두가지 식으로 표현이 가능했는데, 2번 식은 사실 계산의 편의함에 보자 한거라 의미를 없을순 없고,
첫번째 식의 각도랑 연관성 있다는 특징때문에 유용하게 활용이 된돠고 볼 수 있다.

 



벡터의 외적
두 벡터와 수직인 제 3의 벡터를 구한다.
법선 벡터를 구할 때 활용된다.
또, 어떤 예를 들어 네비메쉬로 치면, 네비메쉬안에 물체가 있는지 없는지 판단하는 용도로도 사용된다. (법선벡터의 방향이 다 같으면 안에 있다거나)

(벡터)|a| * (벡터)|b| * sin(각도)
이것만 보면 스칼라가 나오는 것처럼 볼 수 있는데, 결과값은 벡터가 나온다.

왼손 좌표게를 생각해보면 그 결과값이다.

내적과 다르게, 외적은 교환법칙이 성립하지 않는다
a x b 와 b x a 는 다르다.


내적은 코사인을 이용한 각도가 핵심이였으면,
외적은 방향벡터가 핵심이다. (어느쪽으로 나오느냐)


댓글