DIYPlay
블로그

2D 벡터의 내적과 외적 정리

DIYPlayer

·

1달 전

벡터
내적
외적

벡터의 내적(Dot product)

두 벡터 A, B의 크기를 곱한 다음 사이 각도의 cosθ 값을 곱한 것으로 결과는 스칼라 값

계산 식

𝐴 ⃗∙𝐵 ⃗ = 𝑨𝒙 × 𝑩𝒙 + 𝑨𝒚 × 𝑩𝒚 = |𝐵 ⃗| × |𝐴 ⃗|cos⁡𝜃 = |𝐴 ⃗||𝐵 ⃗|cos⁡𝜃

𝐴 ⃗∙𝐵 ⃗ = |𝐴 ⃗||𝐵 ⃗|cos⁡𝜃

특징

1. 내적 결과 값의 부호에 따라서 상대적인 방향성을 알 수 있다.

  • 내적 > 0   양수(+) 인 경우 → 사이 각도가 90도 보다 작다.
  • 내적 < 0   음수(-) 인 경우 → 사이 각도가 90도 보다 크다.
  • 내적 = 0   0 인 경우 → 사이 각도가 90도(직각)와 같다.

2. 동일한 벡터를 내적한 결과 값은 벡터의 길이(크기)의 제곱이다.

  • A A = ∣ A ∣∣ A cos⁡𝜃
  • cos⁡𝜃 = 1 이므로,  A A = ∣ A 2
  • 직각 삼각형의 빗변 구하는 공식과 동일함.   a2 * b2 = c2

3. 내적 결과 값은 상대적인 방향성과 크기의 관계를 수치적으로 나타낸다.

  • 사이 각도가 0 or 180 도 일 경우, cos(0º) = 1, cos(180º) = -1
    이 때 내적 값은 두 벡터 크기의 곱과 크기(길이)가 같다.    A ∣∣ B
     
  • 사이 각도가 90 도에 가까워질수록 일치하는 방향성도 줄어 들고 
    그만큼 내적의 결과 값 크기(길이)도 줄어든다. 

응용 분야

  1. 어떤 물체가 바라보는 방향의 앞에 있는지 뒤에 있는지 판단 
  2. 시야각 사이에 있는지 알 수 있음
  3. 직각인지 확인
  4. 각도 계산
  5. 길이 계산(자신을 내적하고 제곱근을 구함)
  6. 투영을 구하는데 사용

 

벡터의 투영

한 벡터를 다른 벡터에 옮겨 놓은 것. 하나의 벡터를 다른 벡터 위에 떨어뜨려 그 방향으로 투영한 결과.

벡터 A가 벡터 B의 방향에 얼마나 가까운지를 수량화 한다.

계산 식

벡터 A를 벡터 B에 투영한 결과의 크기는 벡터 A와 B의 내적을 벡터 B의 크기로 나눈 값으로 계산할 수 있다.

투영 벡터의 크기

|Proj| = |𝐴 ⃗|cos⁡𝜃 = |𝐴 ⃗| × (𝐴 ⃗∙𝐵 ⃗ / |𝐵 ⃗| × |𝐴 ⃗|) =  𝐴 ⃗∙𝐵 ⃗ / |𝐵 ⃗|


B벡터의 단위 벡터

B unit = 𝐵 ⃗ / |𝐵 ⃗|


투영벡터 길이에 B벡터의 단위벡터를 곱하여 투영벡터를 구함

Proj = (𝐴 ⃗∙𝐵 ⃗ / |𝐵 ⃗|) × (𝐵 ⃗ / |𝐵 ⃗|) = (𝐴 ⃗∙𝐵 ⃗/|𝐵 ⃗|²)𝐵 ⃗

응용 분야

  1. 수선의 발
  2. 선과 점의 가장 가까운 거리를 구할 수 있음

 

벡터의 외적

3차원 공간에서 정의되는 벡터의 외적은 두 벡터의 수직인 새로운 벡터를 생성한다. 

2차원 공간에서의 외적은 세 번째 차원을 가지지 않기 때문에 3차원 공간에서의 외적과 다소 다르다. 결과로 스칼라 값을 가지며 2D 벡터 간의 관계를 이해하는데 도움을 준다.

 

계산 식

𝐴 ⃗ × 𝐵 ⃗ = a₁b₂- a₂b₁= A.x * B.y - A.y * B.x

 

특징

1. 두 벡터가 이루는 평행사변형의 면적에 해당하는 값이다.

2. 부호는 두 벡터의 계산 순서에 따라 결정된다.

3. A 가 B의 시계 방향이면 양수이고, 그 반대이면 음수이다.

4. 같은 방향의 벡터(사이각도 0도) 또는 완전 반대 방향의 벡터(사이각도 180도)를 외적하면 결과는 0이다.

 

응용분야

  1. 면적 계산
  2. 방향 판별. 어떤 물체가 바라보는 방향의 오른쪽에 있는지 왼쪽에 있는지 알 수 있음
  3. 선의 충돌 처리

이전 글

Blockly, pixi.js 사용해서 블록코딩 그림판 만들기 - 3

다음 글

Blockly, pixi.js 사용해서 블록코딩 그림판 만들기 - 2

댓글 0
    서비스 이용약관|개인정보 보호정책

    Copyright © DIYPlay All rights reserved.