위치벡터, 내적과 외적
본문3D 게임 화면에서 상자의 윗면은 밝고 옆면은 어둡다. 컴퓨터는 각 면이 빛을 얼마나 정면으로 받는지 계산해 밝기를 정한다. 그러려면 먼저 면에 수직인 방향을 알아야 하는데, 면은 꼭짓점 세 개의 좌표로만 주어진다. 꼭짓점 \(A(0, 0, 0)\), \(B(1, 2, 0)\), \(C(0, 1, 3)\)으로 이루어진 삼각형 면에 수직인 방향은 어떻게 구할까? 그리고 빛이 \((0, 0, 1)\) 방향에서 비칠 때 이 면은 얼마나 밝아야 할까?
2.7.1내적은 같은 방향의 몫이다
두 벡터 \(\vec a\), \(\vec b\)가 이루는 각이 \(\theta\)일 때 \(\vec a\cdot\vec b = |\vec a||\vec b|\cos\theta\)를 내적이라 한다. \(|\vec b|\cos\theta\)는 \(\vec b\)를 \(\vec a\) 방향으로 정사영한 길이이므로, 내적은 한 벡터가 다른 벡터 방향으로 얼마나 향하는지를 나타낸다. 썰매 줄을 비스듬히 당길 때 썰매를 앞으로 끄는 데 쓰인 일이 힘과 이동 거리의 내적인 것이 그 예이다. 성분으로는 \(\vec a\cdot\vec b = a_1b_1 + a_2b_2 + a_3b_3\)이어서 각을 몰라도 계산할 수 있고, 거꾸로 내적으로 두 벡터 사이의 각을 구할 수 있다.
공간벡터 \(\vec a = (a_1, a_2, a_3)\), \(\vec b = (b_1, b_2, b_3)\)의 외적은 \[\vec a\times\vec b = (a_2b_3 - a_3b_2,\ a_3b_1 - a_1b_3,\ a_1b_2 - a_2b_1)\]이다. \(\vec a\times\vec b\)는 \(\vec a\)와 \(\vec b\)에 모두 수직이고, 크기는 두 벡터가 만드는 평행사변형의 넓이 \(|\vec a||\vec b|\sin\theta\)이며, 방향은 오른손 법칙을 따른다.
외적이 두 벡터에 모두 수직인지는 내적으로 확인한다. 성분을 넣어 \(\vec a\cdot(\vec a\times\vec b)\)를 계산하면 모든 항이 지워져 0이 된다. 그래서 면 위의 두 변 벡터의 외적은 그 면의 법선 벡터가 된다. 렌치로 볼트를 돌리는 돌림힘도 렌치의 위치벡터와 힘의 외적으로, 렌치 끝을 렌치와 수직으로 밀 때 가장 크다.1
2.7.2빛을 받는 정도는 내적이다
면이 빛을 받는 밝기는 면의 법선과 빛이 오는 방향이 이루는 각의 코사인에 비례한다. 그래서 두 방향을 길이 1인 단위벡터로 바꾸어 내적하면 그 코사인 값이 바로 나오고, 이를 면의 밝기로 쓴다. 내적이 음수이면 면이 빛을 등지고 있으므로 밝기를 0으로 둔다. 이 방법을 램버트 음영이라 하며, 게임 화면의 수많은 삼각형마다 외적으로 법선을 구하고 내적으로 밝기를 정한다.
2.7.3예제 풀이
처음 질문의 삼각형 \(ABC\)의 법선 벡터와 넓이를 구하고, 빛 방향 \((0, 0, 1)\)에서의 밝기를 구하여라. 법선이 두 변에 모두 수직인지도 확인하여라.
\(\overrightarrow{AB} = (1, 2, 0)\), \(\overrightarrow{AC} = (0, 1, 3)\)이므로 \(\overrightarrow{AB}\times\overrightarrow{AC} = (2\times3 - 0\times1,\ 0\times0 - 1\times3,\ 1\times1 - 2\times0) = (6, -3, 1)\)이다. \((1, 2, 0)\cdot(6, -3, 1) = 6 - 6 + 0 = 0\), \((0, 1, 3)\cdot(6, -3, 1) = 0 - 3 + 3 = 0\)이므로 두 변에 모두 수직이다.
외적의 크기는 \(\sqrt{36 + 9 + 1} = \sqrt{46} \approx 6.78\)이고, 이는 두 변이 만드는 평행사변형의 넓이이므로 삼각형의 넓이는 그 절반인 약 3.39이다. 밝기는 단위 법선과 빛 방향의 내적 \(\dfrac{(6, -3, 1)\cdot(0, 0, 1)}{\sqrt{46}} = \dfrac{1}{\sqrt{46}} \approx 0.15\)이다. 이 면은 거의 옆을 향하고 있어서 위에서 오는 빛을 15%만 받아 어둡게 칠한다. 즉 외적은 두 벡터에 수직인 방향과 평행사변형의 넓이를, 내적은 두 방향이 같은 쪽을 향하는 정도를 주어, 둘을 함께 쓰면 공간의 면이 빛을 받는 정도를 계산할 수 있다.
아래 탐구 카드에서 썰매를 끄는 힘의 일을 내적으로 구하고, 외적으로 법선과 돌림힘을 구해 3D 물체에 음영을 칠해 보자.
- 외적은 1840년대 아일랜드의 해밀턴이 만든 사원수에서 나왔고, 1880년대 미국의 깁스와 영국의 헤비사이드가 이를 오늘날의 내적과 외적으로 나누어 정리했다. 전자기학의 맥스웰 방정식도 그들 덕분에 지금처럼 짧은 벡터 식으로 쓰게 되었다.
내적 \(\vec a\cdot\vec b = |\vec a||\vec b|\cos\theta = a_1b_1 + a_2b_2 + a_3b_3\)은 두 벡터가 같은 방향을 향하는 정도를 수로 주고, 0이면 두 벡터가 수직이다. 외적 \(\vec a\times\vec b\)는 두 벡터에 모두 수직이고 크기가 평행사변형의 넓이인 벡터여서 면의 법선과 돌림힘을 구하는 데 쓴다. 처음 질문의 삼각형은 법선이 \((6, -3, 1)\), 넓이가 약 3.39이고, 위에서 오는 빛을 받는 밝기는 약 0.15이다.