DirectX

[DirectX] 벡터의 내적

FORHAPPy 2021. 12. 18. 23:25
  1. 벡터의 크기와 방향에 대한 표현 : v = (2, 1) 라는 벡터가 있다. v와 - 1 /2 v 를 비교해보면 방향은 반대 크기는 절반 인 벡터를 나타낸다. 즉 벡터는 크기와 방향을 나타낼 수 있다.
  2. 벡터 :  벡터는 방향과 벡터의 길이를 구할떄 쓴다. 크기와 방향 그리고 위치값을 저장하기 위한 구조체로 사용한다.  벡터 2,2  는 위치가 아니고 방향을 의미한다. 벡터의 크기는 벡터의 길이이고 스칼라 값을 가진다. 
  3. 벡터의 상등 : 크기와 방향이 같으면 같은 벡터이다. 즉, 벡터의 위치는 무관하다. 크기와 방향만 같으면 같은벡터.
  4. 벡터의 덧셈 뺄셈 :  벡터는 덧셈 뺄셈만 있다.
    벡터의 덧셈 벡터의 뺄셈
    두 벡터의 합은 한 벡터의 꼬리에 다른 벡터의 머리를 일치시켜준 것을 말한다. 두 벡터의 뺄셈은 v- u 는 u에서 v로 가는 벡터에 해당한다.
    같은 방향의 합은 더 강한 알짜힘이고 다른 방향의 합은 더 약한 알짜 힘이다. 한 점에서 다른 점을 가리키는 벡터를 구해야 할때 사용 
    이동거리의 합을 구할수 있다.   
     
  5. 벡터의 크기 : 지향 선분의 길이 이다. 이중수직선으로 표시한다.  u의 크기는 ||u|| 이다. u = (x, y, z) 가 주어졌을때 그 크기는? 피타고라스의 정의를 두 번 이용해서 정한다. ||u|| = 루트(x^2 + y^2 + z^2)  이다.  스칼라 곱을 하면 크기를 조정 할 수 있고, 음수 일 경우 방향이 뒤집힌다. 
  6. 방향전용 벡터 : 벡터를 순전히 방향을 나타내는 용도로만 사용하는 경우 벡터의 길이가 중요하지 않다. 이런 방향전용 벡터는 길이를 정확히 1(단위길이) 로 만들어 주면 편리하다. 크기가 1인 벡터를 단위벡터라고 부른다. 
  7. 벡터의 정규화 : 벡터의 각성분을 벡터의 크기로 나누면 벡터가 정규화 된다. 
  8. 다이렉트 자료형 벡터 : D3DXVECTOR3 는 float 3차원 좌표정보를 가지고 있는 D3DXVECTOR 구조체를 상속받는다.
  9. 벡터의 덧셈의 사용 : 플레이어 값 - 몬스터 값 하면 몬스터가 플레이어를 향한 방향이 나온다. 
  10. 벡터의 곱셈은 존재하지 않는다.  결과를 추론하는 과정이 벡터의 곱셈과 비슷하다고 하여 곱셈으로 불리는게 벡터의 내적과 외적이다. 
  11. 벡터의 내적 :

 벡터의 내적 : 스칼라 곱이라고 불린다. 내적은 두 벡터 성분을 곱하여 상수값을 결과로 갖는다. 두 벡터의 내적은 벡터가 아닌 스칼라 값을 갖는다. 


  1 : 벡터의 내적은 두 방향 벡터여야 한다.
  2 : 두 방향 벡터가 단위 벡터인 상태에서 내적을 수행하면 결과값이 되는 스칼라는 각도 값으로 사용할 수 있다.

 A(x,y,z) ● B(x`,y`,z`) => x*x` + y*y` + z*z`

 

한 벡터의 길이를 다른 벡터의 길이를 이용해(정확히 말하면 원본에 투영해서) 늘려주는 것을 내적이라고 한다.

 

<두 벡터 사이각을 구하기>

벡터  a 와 벡터 b 를 알고 있으면 각각의 크기를 알수 있고 그러면 내적공식에 역코사인을 적용하여 각도를 구할 수 있다. 만약 a와 b가 단위벡터면 내적의 결과값을 역코사인에 대입해 바로 각도를 알 수 있다. 

 

 

벡터의 내적은 기준이 되는 한 방향이 존재하고 그 방향에 다른 벡터가 도움을 주는지 안주는지 악영향을 주는지를 표현하는게 내적이다. 

 

기준이 되는 방향을 b벡터라고 하자. b방향으로 물체를 이동 시키고 싶다. 

 a방향으로 a힘만큼 물체를 끌어 당기면 b방향으로 얼마나 짐이 끌릴 까?

① 만큼 힘의 보탬이 될것이다. 

내적의 정의는 ① * b의 크기 이다.  메인 방향 벡터에 도움을 주는 만큼의 힘을 곱한것이 내적의 정의 이다. 

여기서 둘사이의 각도가 둔각일 경우 90도 보다 작을 경우에는 도움을 주는 방향이 될 것이다. 

도움을 주는 방향이 되므로 벡터 내적의 값은 0보다 클 것이다. 

 

그러나 90도 일때는 도움이 하나도 안될 것이다. 그경우 벡터 내적의 값은 0 이 될 것이다. 

 

각도가 90도를 넘어 가면 악영향을 주는 방향이다. 

'DirectX' 카테고리의 다른 글

[DirectX] 다중표본화의 이론1  (0) 2021.12.31
[DirectX] 포함디렉토리, 라이브러리 디렉토리  (0) 2021.12.24
[DirectX] 벡터 3  (0) 2021.12.19
[DirectX] 벡터의 내적2  (0) 2021.12.19
[DirectX] 기본 개념 이해하기 1  (0) 2021.12.18