Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

승쨩개발공부

[GM] 백터의 내적 본문

GameMath

[GM] 백터의 내적

Unknowns 2022. 4. 26. 02:20

 

A백터와 B의 내적은 백터 A * 백터 B * 코사인세타 이다

 

 

백터의 내적은 이 두 백터간에 서로 투영되는 길이를 나타내는 의미도 가진다.

 

또 내적은 두 백터간의 각도를 얻어오는 방법도 된다.

 

예를들어 캐릭터가 몬스터를 공격했을떄 

캐릭터와 몬스터가 같은방향을 본다 = 백어택

캐릭터와 몬스터가 다른방향을 본다 = 일반어택

 

쉐이더에선 빛을 보고있냐 빛을 등지고있냐 판단하기도 한다.

 

 

 

삼각형을 두개의 직각 삼각형으로 만들었을떄

 

파란색의 길이는 C백터 * 코사인B

빨갠색의 길이는 B백터 * 코사인C 가 된다

 

백터 A 의 길이는 파란색 + 빨간색 이 된다

 

 

 

A백터의 제곱은 B백터제곱 + C백터 제곱 - 2*b*c * 코사인 A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

백터의 내적은 백터의 곱셈

하지만 값은 스칼라다.

 

 

숫자 a * a 는 a제곱이다

 

백터 a * 백터 a는 a백터 제곱이다

 

a - b 제곱은 분배법칙을 적용해서 생각해보면 a - b를 두번 각각 곱한것

 

 

a * a = a제곱

a * b = a * b

b * a = b * a

b * b = b제곱

 

최종적으로 a-b제곱은 이런 결과가 나온다

 

 

백터에도 이게 똑같이 적용될수있다

 

검은화살표는 이런식으로 표시될수있다.

 

 

 

제 2코사인 법칙을 이용하면  위 백터를 삼각형이라고 가정햇을떄

 

검은색 백터의 길이의 제곱은

 

A백터 제곱  + B백터 제곱 - 2 * A백터 * B백터 * 코사인 세타

 

 

 

제 2코사인 법칙이랑 분배법칙이랑 나란히 놓으면 공통적인게있다

 

 

공통적인걸 뺴고 보면 결론적으로

 

백터 a * b 는 a백터길이 * b백터 길이 * 코사인세타

 

 

그래서 이 공식은

 

만약에 백터 a와 b둘다 길이가 1인백터(노말라이즈) 된다면

 

백터 a와 b의 내적은 코사인세타가된다

 

만약 세타가 0도 즉 두 백터가 서로 같은곳을 바라보면 1

서로 수직을 이루면 0

서로 반대방향을 보고있으면 -1이된다

 

 

 

 

 

 

 

 

 

 

그리고 백터의 2번쨰 각각 성분을 곱한것끼리 더한것은 어떻게될지 유도해보자

 

 

 

피타고라스의 정리를 한번 생각하보자

 

검은 백터 a가있을떄 직각삼각형으로 생각해보면  높이는 Ay가되고 밑변은 Ax가 된다

 

 

따라서 a백터와 b백터의 내적은 이렇게 나오게된다

내적은 피타고라스 정리에서 도출해보면 와닿게된다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

결론!!!!

그래서 백터 A와 백터 B의 내적은 

백터 A의길이 * 백터 B의길이 * 코사인세타 = Ax * Bx + Ay * By + Az * Bz 서로 같다

 

 

 

백터 AB가 길이가 1이라면

 

 

그냥 코사인 세타가 두 백터의 내적값이다

 

두백터가 서로 같은방향을 보고있다면 내적값은 1

두백터가 직각을 이루고있으면 내적값은 0 

두백터가 서로 반대방향을 보고있으면 내적값은 -1

 

이런 성질을 이용해서 같은곳을보는지 다른곳을보는지 알수있다

 

 

'GameMath' 카테고리의 다른 글

[GM] 삼각함수  (0) 2022.04.26
[GM] 라디안  (0) 2022.04.26
[GM] 백터(Vector)  (0) 2022.04.25
[GM] 피타고라스 정리  (0) 2022.04.25