안녕하세요 이번 시간에는 저번 시간에 배운 벡터의 개념에 이어
벡터의 내적과 외적에 대해 배워보겠습니다.
※제 수업은 이전주차에서 배운 개념을 재차 설명하지 않습니다※
1. 벡터의 내적
Direct3D에서 벡터의 내적이란 두 벡터가 있을 때,
이 두 벡터가 이루는 각의 크기가 θ(세타)값일 때 두 벡터가 내적했다고 정의합니다.
이전 시간에 벡터는 크기와 방향을 가진 선분의 형태를 띈다고 했는데, 크기만 가진 벡터를 스칼라 값이라 했습니다.
두 벡터의 내적값을 구하면 그 결과는 스칼라 값이 나옵니다.
벡터 u = (ux, uy, uz)와 v = (vx, vy, vz)가 있다고 할 때, 두 벡터의 내적을 구하는 공식은 다음 두 가지가 있습니다.
하나는 내적 값, 다른 하나는 내적 각도를 구하는 공식입니다.
- uv = uxvx + uyvy + uzvz
- uv = ||u|| ||v|| cosθ
즉, 내적은 두 벡터끼리 대응하는 성분을 곱해서 더한 결과라고 보시면 됩니다.
cosθ는 쉽게 말해 두 벡터 길이를 서로 나눈 값이라고 생각하시면 됩니다.
- uv의 결과가 0이면 두 벡터의 상태는 직교(수직) 상태입니다.
- uv의 결과가 0보다 크면 두 벡터는 예각을 이룹니다.
- 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에서 벡터와 관련해 사용하는 라이브러리 기능에 대해 알아보겠습니다.
'IT 기술 > Direct3D' 카테고리의 다른 글
Direct3D 행렬의 전치행렬, 단위행렬, 역행렬_6일차 (0) | 2023.01.17 |
---|---|
Direct3D 행렬 개념, 연산 및 곱셈_5일차 (0) | 2023.01.16 |
Direct3D 벡터 요약_4일차 (0) | 2023.01.15 |
Direct3D 벡터의 점, 라이브러리_3일차 (0) | 2023.01.15 |
Direct3D 벡터 개념_1일차 (0) | 2023.01.13 |
댓글