본문 바로가기
IT 기술/Direct3D

Direct3D 벡터의 내적, 외적_2일차

by 썬's 2023. 1. 14.

안녕하세요 이번 시간에는 저번 시간에 배운 벡터의 개념에 이어

벡터의 내적과 외적에 대해 배워보겠습니다.

※제 수업은 이전주차에서 배운 개념을 재차 설명하지 않습니다※


1. 벡터의 내적

Direct3D에서 벡터의 내적이란 두 벡터가 있을 때,

두 벡터가 이루는 각의 크기가  θ(세타)값일 때 두 벡터가 내적했다고 정의합니다.

 

이전 시간에 벡터는 크기와 방향을 가진 선분의 형태를 띈다고 했는데, 크기만 가진 벡터를 스칼라 값이라 했습니다.

두 벡터의 내적값을 구하면 그 결과는 스칼라 값이 나옵니다.

벡터 u = (ux, uy, uz)와 v = (vx, vy, vz)가 있다고 할 때, 두 벡터의 내적을 구하는 공식은 다음 두 가지가 있습니다.

하나는 내적 값, 다른 하나는 내적 각도를 구하는 공식입니다.

  • uv = uxvx + uyvy + uzvz
  • uv = ||u|| ||v|| cosθ

즉, 내적은 두 벡터끼리 대응하는 성분을 곱해서 더한 결과라고 보시면 됩니다.

cosθ는 쉽게 말해 두 벡터 길이를 서로 나눈 값이라고 생각하시면 됩니다.

  1. uv의 결과가 0이면 두 벡터의 상태는 직교(수직) 상태입니다.
  2. uv의 결과가 0보다 크면 두 벡터는 예각을 이룹니다.
  3. uv의 결과가 0보다 작으면 두 벡터는 둔각을 이룹니다.


2. 벡터의 외적

Direct3D에서 벡터의 외적이란 내적과 조금 다른 개념을 가집니다.

내적은 두 벡터가 이루는 각의 크기를 구하는 것이라면, 외적은 두 벡터의 결과가 스칼라 값이 아닌 또 다른 벡터가 나오는 결과를 가집니다. 즉, 외적은 그냥 두 벡터를 곱하면 또 다른 벡터가 나온다고 생각하시면 됩니다.

여기서 주의하실 점은 외적은 오로지 3차원 벡터(x, y, z축을 가진 벡터), 좀 더 구체적으로 말하면 3차원 세계에서만 구할 수 있습니다. 반대로 말하면 2차원 벡터(x, y축만 가진 벡터)에서는 외적을 구할 수 없습니다.

이는 하단 그림을 보시면 조금 이해하기 쉬우실 겁니다.

 

벡터 u와 v가 있다고 했을 때, 이 두 벡터를 외적하면 또 다른 벡터인 w가 나옵니다.

여기서 w 벡터는 u와 v와 직교 상태입니다. 외적 공식은 다음과 같습니다.

  • w = uv = (uyvz - uzvy, uzvx - uxvz, uxvy - uyvx)

자 그럼 예시를 들어보겠습니다.

벡터 u = (3, 6, -2)와 v = (2, 0, 1)가 있을 때 또 다른 벡터 w의 값은 다음과 같습니다.

  • w = uv
  •     = (3, 6, -2) x (2, 0, 1)
  •     = [6x1 - (-2)x0, (-2)x2 - 3x1, 3x0 - 6x1)]
  •     = (6, -7, -6) 

추가로 w가 u, v와 직교인지 확인하는 방법은  다음과 같습니다.

uv = 0이면 즉, 벡터 u와 v가 0인 상태에서 wu의 값과 wv의 값이 동일하면 w는 u와 v와 직교입니다.

벡터 u = (2, 1, 3), v = (2, 0, 0), w = (0, 6, -2)가 있다고 가정해 보겠습니다.

결과값은 두 벡터 모두 0으로 w는 u와 v와 직교입니다.

  • wu = (0, 6, -2) x (2, 1, 3) = 0 + 6 +(-6) = 0
  • wv = (0, 6, -2) x (2, 0, 0) = 0 + 0 + 0 = 0

오늘은 Direct3D에서 벡터를 이용한 내적과 외적을 구하는 공식에 대해 알아봤습니다.

다음 시간에는 벡터의 위치를 서술하는 벡터의 점과

Direct3D에서 벡터와 관련해 사용하는 라이브러리 기능에 대해 알아보겠습니다.

댓글