Chapter 3. 벡터 응용

다음 문제를 다루어 보자.

- 주어진 두 점 사이의 거리는?

- 주어진 두 방향이 수직인가?

- 직선의 방정식은?

- 평면의 방정식은?

- 주어진 점으로부터 직선까지의 거리는?

- 주어진 점으로부터 평면까지의 거리는?

- 임의의 점에서 서로 수직하는 세 개의 축은?

- 주어진 다면체의 면 중에서 보이지 않는 면은 어떤 면인가?

3.1 벡터

컴퓨터그래픽스와 컴퓨터게임 등에서 다루는 물리적인 양은 방향과 크기를 함께 가지고 있는 경우가 많다. 움직이는 물체의 속도와 그 물체에 가해지는 힘과 같은 물리량은 방향에 따라서 다른 결과를 초래하기도 한다. 그러므로 우리가 알고 있는 기본적인 수인 실수뿐만이 아니라 방향을 고려할 수 있는 새로운 수 체계가 필요함을 알 수 있다. 본 장에서는 이러한 크기와 방향을 표현하는 벡터에 대해서 학습하며 이를 이용한 여러 가지의 응용분야에 대해서 알아보도록 한다.

3.1 벡터의 정의

벡터(vector)는 크기만으로 나타낼 수 있는 스칼라(scalar)와 달리 방향과 크기를 사용하여 나타낼 수 있는 것이다. 일상적으로 사용하는 벡터는 유향선분(방향이 있는 선분 즉, 화살표)를 써서 표현할 수 있다. 벡터에 대한 여랴 분야에서의 쓰님새에 관해서 살펴보면 다음과 같다.

① 벡터는 물리학과 공학에서 방향과 크기를 나타낸다.

② 벡터는 선형대수학에서 크기가 n×1(열벡터) 과 1×n(행벡터)인 행렬을 일컫는다.

③ 벡터는 수학과 천문학에서 동경(動徑, radius vector)이기도 하다.

④ 벡터는 의학에서 병균의 매개 동물로서도 사용된다.

⑤ 벡터는 무전에 의한 유도(誘導) 또는 항공기의 진로에서도 사용된다.

⑥ 컴퓨터에서 벡터는 화상의 표현 요소로서의 방향을 지닌 선분을 의미하기도 한다.

⑦ 컴퓨터에서 벡터는 또한 동적 배열 자료구조를 뜻하기도 한다.

⑧ 동적 배열의 일종인 벡터는 표준 템플릿 라이브러리의 자료형이다.

⑨ 벡터는 기계 학습 분야에서 입력 데이터를 표시하는 방법이기도 하다.

3.2 벡터의 표현

세계에서 사용되는 양에는 크기만을 가지고 있는 스칼라와 방향과 크기를 함께 가지고 있는 벡터로 구분할 수 있다. 일반적으로 스칼라는 실수로 표현하고 벡터와 같은 양은 방향과 크기가 있는 양이기 때문에 시작점과 끝점에 의해서 표현될 수 있을 것이다. 그러므로 일반적으로 유향선분(방향이 있는 선분 즉, 화살표)으로 표현된다. 이러한 유향선분은 많은 종류의 벡터를 표현하기에는 많은 어려움을 가지고 있다. 2차원 평면의 하나의 점을 기준으로 하여 모든 벡터의 시점을 이 주어진 점에 일치시키게 되면 벡터의 종점의 위치에 따라 벡터를 구분할 수 있을 것이다.

다음 그림에 있는 벡터들 중에서 왼쪽에 있는 검은색의 벡터(화살표)와 동일한 벡터를 찾아보자.

아마도 답은 파랑색의 벡터일 것이다. 왜냐하면, 초록색 계통의 2개의 벡터들은 일단 방향이 다르며, 빨강색의 벡터는 크기는 동일하나 방향이 정반대이다. 그러므로 파랑생의 벡터가 우리가 찾고자하는 벡터임을 알 수 있다. 일반적으로 주어진 벡터와 동일한 벡터는 무수히 많을 것이다. 짐작할 수 잇을 것이다. 이러한 벡터들을 모두 화살표로 표현하는 것은 매우 비현실적인 방법일 것이다. 이에 대한 효과적인 표현법으로서 다음과 같은 방법을 생각해보자.

2차원 공간의 원점에 보든 벡터의 시점을 일치시키자. 그러면 그 벡터의 방향과 크기에 따라 종점의 위치가 달라질 것이다. 그러므로 이때의 종점의 위치를 좌표계를 사용하여 나타낸다면 매우 효율적임을 알 수 있다. 따라서 벡터를 다음과 같은 형태로 표현할 수 있다.

[eqn: (x,`y)` IN ``R ^{2}] [eqn: (x,`y,`z)`` IN ``R ^{3}]

경우에 따라서는 점(point)를 나타내는 경우와 혼동을 일으키기도 함을 유의하자.

3.3 벡터 연산

[상등] 벡터의 상등

두  벡터 [eqn: A=(a _{x} ,`a _{y} ,`a _{z} )], [eqn: B=(b _{x} ,b _{y} ,b _{z} )]의 각 성분의 값이 동일할 때 “두 벡터가 상등이다” 라고 말한다.

[eqn: A=B``````````` LRARROW `````a _{x} =b _{x} ,````a _{y} =b _{y} ,````a _{z} =b _{z}]

[크기] 벡터의 크기

벡터 [eqn: A=(a _{x} ,`a _{y} ,`a _{z} )]의 크기는 다음과 같이 정의된다.

[eqn: LEFT ∥ A RIGHT ∥ = sqrt {a _{x} ^{2} +a _{y} ^{2} +a _{z} ^{2}}]

[덧셈] 벡터의 덧셈

두 벡터 [eqn: A=(a _{1} ,`a _{2} ,`a _{3} ,` CDOTS ,`a _{n} )], [eqn: B=(b _{1} _{x} ,`b _{2} ,`b _{3} ,` CDOTS ,`b _{n} )]의 덧셈은 다음과 같이 정의된다.

[eqn: A+B=(a _{1} ,`a _{2} ,`` CDOTS ,`a _{n} )+(b _{1} ,`b _{2} ,`` CDOTS ,`b _{n} )=(a _{1} +b _{1} ,`a _{2} +b _{2} ,` CDOTS ,`a _{n} +b _{n} )]

[내적] Inner Product

내적 또는 스칼라 곱(scalar product, dot product)은 두 벡터로 스칼라를 계산하는 이항연산이다. 스칼라 곱을 사용하는 모든 유클리드 공간은 내적공간이다.

두 벡터 [eqn: A=(a _{1} ,`a _{2} ,`a _{3} ,` CDOTS ,`a _{n} )], [eqn: B=(b _{1} _{x} ,`b _{2} ,`b _{3} ,` CDOTS ,`b _{n} )]의 스칼라 곱은 다음과 같다:

[eqn: A BULLET B=a _{1} b _{1} +`a _{2} b _{2} +`a _{3} b _{3} +` CDOTS +`a _{n} b _{n} = sum _{i=1} ^{n} a _{i} b _{i}]

예를 들어, 두 벡터 [1, 3, −2], [4, −2, −1]의 스칼라 곱은 [1, 3, −2]·[4, −2, −1] = 1×4 + 3×(−2) + (−2)×(−1) = 0. 이 된다.

벡터의 내적을 두 벡터가 이루고 있는 각도를 이용하는 다음과 같은 수식으로 표현가능하는데,

[eqn: A BULLET B= LEFT ∥ A RIGHT ∥ LEFT ∥ B RIGHT ∥ cos` theta]

이는 벡터 A에 벡터 B를 투영한 형태 즉 벡터 B를 벡터 A와 동일한 방향의 성분으로 변환하여 그 스칼라값을 벡터 A의 스칼라 값에 곱하는 것이라 할 수 있다. 이때 벡터 A와 벡터 B의 사이각인 θ가 90˚ 즉 직교하는 경우는 결과가 "0"이 되며 0˚인 경우 즉 같은 방향인 경우에 최대값이 된다. 물론 결과값은 벡터가 아닌 스칼라 값이다.

[증명]  [eqn: A BULLET B= LEFT ∥ A RIGHT ∥ LEFT ∥ B RIGHT ∥ cos` theta]

코사인 제2법칙을 사용하여 증명할 수 있다.

[eqn: a ^{2} =y ^{2} +(c-x) ^{2}], [eqn: b ^{2} =x ^{2} +y ^{2}]

[eqn: a ^{2} =b ^{2} -x ^{2} +(c-x) ^{2} =b ^{2} -x ^{2} +c ^{2} -2cx`+x ^{2}], [eqn: x=b`cos` theta `]

[eqn: a ^{2} =b ^{2} +c ^{2} -2`c`b`cos` theta `]

[eqn: LEFT ∥ B-A RIGHT ∥ ^{2} = LEFT ∥ A RIGHT ∥ ^{2} + LEFT ∥ B RIGHT ∥ ^{2} -2 LEFT ∥ A RIGHT ∥ ` LEFT ∥ B RIGHT ∥ `cos` theta `]

[eqn: LEFT ∥ B-A RIGHT ∥ ^{2} =(B-A) BULLET (B-A)`= LEFT ∥ A RIGHT ∥ ^{2} + LEFT ∥ B RIGHT ∥ ^{2} -2A BULLET B]

그러므로

[eqn: A BULLET B= LEFT ∥ A RIGHT ∥ ` LEFT ∥ B RIGHT ∥ `cos` theta `]

[수직]        두 벡터 [eqn: A]와 [eqn: B]에 대해서

[eqn: A BOT B```````````` LRARROW ``````````A BULLET B=0]

컴퓨터그래픽스와 컴퓨터게임에서는 벡터의 내적 연산을 많이 사용하는데 평면의 방정식을 유도한다든지, 한 점과 평면까지의 거리 계산, 한 점으로부터 직선까지의 거리 계산 등과 같은 응용문제에 대한 해결책을 벡터 내적에서 찾을 수 있음을 알 수 있다.

[외적] Cross Product

수학에서 외적(外積)은 3차원 공간의 벡터들 간의 이항연산의 일종이다. 연산의 결과가 스칼라인 내적(內積)과는 달리 연산의 결과가 벡터이기 때문에 벡터 곱(vector product)이라고 불리기도 한다. 외적은 물리학의 각운동량, 로렌츠 힘 등의 공식에 등장한다.

두 벡터 a와 b의 외적은 a x b라 쓰고(쐐기곱과 연관지어 a ^ b라고 쓰기도 한다.), 다음과 같이 정의된다.

[eqn: vec{a} TIMES vec{b} = vec{n} LEFT | a RIGHT | LEFT | b RIGHT | `sin` theta `]

식에서 θ는 a와 b가 이루는 각을 나타내며, [eqn: vec{n}]은 a와 b에 공통으로 수직인 단위벡터를 나타낸다.

[eqn: vec{n} = dmatrix{i&j&k#a _{x}&a _{y}&a _{z}#b _{x}&b _{y}&b _{z}} =(a _{y`} b _{z} `-`a _{z} b _{y} )`i`+(a _{z} b _{x} -a _{x} b _{z} )j`+`(a _{x} b _{y} -a _{y} b _{x} )k]

위 정의에서의 문제점은 a와 b에 공통으로 수직인 방향이 두개라는 점이다. 즉, n이 수직이면, -n도 수직이다. 어느 것을 두 벡터의 외적으로 할 것인가는 벡터공간의 방향성(orientation)에 따라 달라진다. 오른손 좌표계에서는 a×b는, a, b, a×b가 오른손 좌표계 방향을 따르도록 정의되고, 왼손좌표계에선 마찬가지로 동일한 순서의 세 벡터가 왼손 좌표계 방향을 따르도록 정의된다. 이와 같이 좌표계의 방향성에 의존하기 때문에, 외적은 유사벡터로 분류된다. 외적을 그림으로 표현해 보면, 다음과 같다.

[eqn: a,`b,`c` IN `R ^{3}], [eqn: alpha ` IN `R]이라 할 때, 벡터의 외적은 다음과 같은 성질을 가지고 있다.

반대칭성

[eqn: a TIMES b`=`-`b` TIMES a]

스칼라곱에 대한 선형성

[eqn: ( alpha a) TIMES b`=`a TIMES ( alpha b)`=` alpha (`a TIMES b)]

벡터의 덧셈에 대한 분배법칙

[eqn: a TIMES (b+c)`=`a TIMES b+`a TIMES c]

스칼라 삼중곱

[eqn: (a TIMES b) TIMES c`=`a TIMES (b TIMES c)= dmatrix{a _{x}&a _{y}&a _{z}#b _{x}&b _{y}&b _{z}#c _{x}&c _{y}&c _{z}}]

벡터 삼중곱 ( 라그랑주 공식 )

[eqn: a TIMES (b TIMES c)`=`b BULLET (a TIMES c)-c BULLET (`a TIMES b)]

벡터곱의 크기

[eqn: LEFT ∥ a TIMES b RIGHT ∥ ^{2} =(a BULLET a)(b BULLET b)`-`(a BULLET b) ^{2}]

[eqn: LEFT ∥ a TIMES b RIGHT ∥ = LEFT ∥ a RIGHT ∥ LEFT ∥ b RIGHT ∥ sin` theta]

여기서 θ는 a로부터 b까지의 각도이다. 위 성질 때문에 벡터곱의 크기는 두 벡터로 만들어지는 평행사변형의 면적으로 생각할 수 있다.

야코비 항등식

[eqn: a TIMES (b TIMES c)`+b TIMES (c TIMES a)`+c TIMES (a TIMES b)=0]

수직

a×b ⊥ a 이고 a×b ⊥ b이다.

두 벡터의 평행성 확인

a와 b가 모두 0벡터가 아닐 때, a×b = 0 이어야만 a, b는 서로 평행이고, 역도 성립한다.

유클리드 공간의 단위벡터의 외적

유클리드 공간의 단위벡터 i, j, k 는 주어진 직교좌표계에서 다음 관계를 만족한다.

[eqn: i TIMES j=k], [eqn: j TIMES k=i], [eqn: k TIMES i=j]

이 식을 이용해, 외적의 좌표는 일부러 벡터 사이의 각을 계산할 필요 없이 다음과 같이 대수적으로 구할 수 있다.

[eqn: a=a _{x} i+a _{y} j+a _{z} k=[a _{x} ,`a _{y,`} a _{z} ]]

[eqn: b=b _{x} i+b _{y} j+b _{z} k=[b _{x} ,`b _{y,`} b _{z} ]]

로 표기할 때,

[eqn: a TIMES b=[a _{x} ,a _{y} ,a _{z} ] TIMES [b _{x} ,`b _{y,`} b _{z} ]]

[eqn: =(a _{x} i+a _{y} j+a _{z} k)] TIMES (b _{x} i+`b _{y} j+b _{z} k)]

[eqn: =a _{x} b _{y} (i TIMES j)+a _{x} b _{z} (i TIMES k)+a _{y} b _{x} (j TIMES i)]

[eqn: +a _{y} b _{z} (j TIMES k)+a _{z} b _{x} (k TIMES i)+a _{z} b _{y} (k TIMES j)]

[eqn: =a _{x} b _{y} ``(k)+a _{x} b _{z} (-j)+a _{y} b _{x} (-k)]

[eqn: +a _{y} b _{z} (i)+a _{z} b _{x} (j)+a _{z} b _{y} (-i)]

[eqn: =(a _{y} b _{z} -a _{z} b _{y} )``i+(a _{z} b _{x} -a _{x} b _{z} )j+(a _{x} b _{y} -a _{y} b _{x} )k]

위에 쓰인 좌표는 다음과 같이 행렬식을 이용하여 간단히 쓸 수 있다.:

[eqn: a TIMES b=det bmatrix{i&j&k#a _{x}&a _{y}&a _{z}#b _{x}&b _{y}&b _{z}}]

따라서 세 (열,행)벡터로 이루어진 행렬의 행렬식은 다음과 같이 세 벡터의 내적과 외적으로 쓸 수 있다.

det(a,b,c) = a·(b×c).

3.4 벡터 연산의 응용

[두 점 사이의 거리]

3차원 공간에 있는 두 점 [eqn: P(x _{1} ,`y _{1} ,z _{1} )], [eqn: Q(x _{2} ,`y _{2} ,z _{2} )] 사이의 거리 [eqn: d(P,`Q)]는 다음과 같이 정의된다.

[eqn: d(P,`Q)= sqrt {(x _{2} -x _{1} ) ^{2} +(y _{2} -y _{1} ) ^{2} +(z _{2} -z _{1} ) ^{2}}]

예제) 두 점 [eqn: P(1,`2,`3)]과 [eqn: Q(3,`2,`1)] 사이의 거리는 ?

[eqn: d(P,`Q)= sqrt {(3-1) ^{2} +(2-2) ^{2} +(1-3) ^{2}} =2 sqrt {2}]

예제) 두 점 [eqn: P(0,`0,`0)]과 [eqn: Q(x,`y,`z)] 사이의 거리는 ?

[eqn: d(P,`Q)= sqrt {(x-0) ^{2} +(y-0) ^{2} +(z-0) ^{2}} = sqrt {x ^{2} +y ^{2} +z ^{2}}]

[직선의 방정식]

2차원 공간에 있는 직선의 방정식은 양함수 형태로는 다음과 같은 관계식을 갖는다.

[eqn: y`=`mx`+b],

이때 [eqn: m]은 직선의 기울기라고 하며, [eqn: b]는 직선의 [eqn: y]절편이라 한다. 이를 구하기 위해서는 적어도 2개의 조건을 가지고 있어야 한다. 왜냐하면 미지수가 두 개이기 때문이다.

① 두 점 [eqn: P(x _{1} ,`y _{1} )], [eqn: Q(x _{2} ,`y _{2} )]을 지나는 직선

먼저 기울기 [eqn: m]은 다음과 같이 구할 수 있다.

[eqn: m= {TRIANGLE y} over {TRIANGLE x} = {y _{2} -y _{1}} over {x _{2} -x _{1} _{}}]

그러하면,

[eqn: y`=` {y _{2} -y _{1}} over {x _{2} -x _{1}} x`+b].

여기에다 [eqn: P(x _{1} ,`y _{1} ,z _{1} )]를 지난다는 조건을 결합하면 다음과 같은 y절편을 구할 수 있다.

[eqn: y _{1} `=` {y _{2} -y _{1}} over {x _{2} -x _{1}} x _{1} `+b]

따라서,

[eqn: b=`y _{1} -` {y _{2} -y _{1}} over {x _{2} -x _{1}} x _{1} =` {x _{2} y _{1} -x _{1} y _{1} -x _{1} y _{2} +x _{1} y _{1}} over {x _{2} -x _{1}} = {x _{2} y _{1} -x _{1} y _{2}} over {x _{2} -x _{1}} `].

대입하면,

[eqn: y`=` {y _{2} -y _{1}} over {x _{2} -x _{1}} x`+ {x _{2} y _{1} -x _{1} y _{2}} over {x _{2} -x _{1}}]

[eqn: y`=` {y _{2} -y _{1}} over {x _{2} -x _{1}} (x-x _{1} )`+ {(x _{2} -x _{1} )y _{1}} over {x _{2} -x _{1}}]

[eqn: y`=` {y _{2} -y _{1}} over {x _{2} -x _{1}} (x-x _{1} )`+y _{1}]

다르게 해석하면 다음과 같다.

[eqn: ` {x-x _{1}} over {x _{2} -x _{1}} `= {y`-y _{1}} over {y _{2} -y _{1}}]

② 직선의 방정식에 대한 벡터 표현

[eqn: vec{PQ} ``// vec{PX}]

[eqn: vec{PX} =`t` vec{PQ}]

[eqn: (x-x _{1} ,`y-y _{1} )`=t(x _{2} -x _{1} ,`y _{2} -y _{1} )]

[eqn: cases{x=t(x _{2} -x _{1} )+x _{1}&#y=t(y _{2} -y _{1} )+y _{1}&}]

③ 두 점 [eqn: P(x _{1} ,`y _{1} ,`z _{1} )], [eqn: Q(x _{2} ,`y _{2} ,`z _{2} )]을 지나는 직선

[eqn: ` {x-x _{1}} over {x _{2} -x _{1}} `= {y`-y _{1}} over {y _{2} -y _{1}} = {z-z _{1}} over {z _{2} -z _{1}}]

[직선까지의 거리]

3차원 공간에 임의의 점 [eqn: P(x _{1} ,`y _{1} ,`z _{1} )]이 존재할 때, 주어진 직선 [eqn: L(t)]까지의 거리를 계산하고자 한다. 주어진 점으로부터 직선까지의 거리를 구하는 식을 다음과 같이 유도하자.

직선 L(t) 상의 임의의 점 [eqn: Q]를 선택하여 벡터 [eqn: V= vec{QP}]를 구한다. 직선의 방향 벡터의 단위벡터 [eqn: N]을 구하고, 벡터 [eqn: V= vec{QP}]의 직선 L(t) 위로 투영을 하게 되면 [eqn: (V BULLET N)N]을 얻게 되고 따라서 점 P의 직선 L(t) 까지의 수직거리를 나타내는 벡터 [eqn: V-(V BULLET N)N]을 얻게 된다. 그러므로 점 P의 직선까지의 거리는 다음의 식으로 표현될 수 있다.

[eqn: d= LEFT ∥ V-(V BULLET N)N RIGHT ∥]

[평면의 방정식]

평면은 3차원 공간에 존재하는 것으로서 xy 평면, yz 평면, zx 평면 들이 하나의 평면이라 볼 수 있다. 평면에 있는 놓여 있는 모든 벡터들은 하나의 벡터에 수직이 되는데 이러한 벡터를 평면의 법선벡터라고 한다. 이제 평면의 방정식에 대한 정의를 다음과 같이 내려 보도록 한다.

“주어진 벡터 [eqn: N=(a,`b,`c)]을 법선벡터로 가지며 점 [eqn: P(x _{1} ,`y _{1} ,z _{1} )]을 지나는 평면은 다음의 조건을 만족하는 점들의 집합이다.”

[eqn: (X-P) BULLET N=0]

[eqn: (x-x _{1} ,`y-y _{1} ,`z-z _{1} ) BULLET (a,`b,`c)=0]

[eqn: a(x-x _{1} )+b(`y-y _{1} )+c(`z-z _{1} )=0]

[eqn: ax+by+cz=ax _{1} +by _{1} +c`z _{1}]

[평면까지의 거리]

3차원 공간에 임의의 점 [eqn: P(x _{1} ,`y _{1} ,`z _{1} )]이 존재할 때, 주어진 평면까지의 거리를 계산하고자 한다. 주어진 점으로부터 평면까지의 거리를 구하는 식을 다음과 같이 유도하자. 평면의 방정식이 다음과 같이 주어져 있다면,

[eqn: ax+by+cz+d=`0]

평면의 법선벡터는

[eqn: N=(a,`b,`c)]

이다.  평면에 속하는 임의의 점 [eqn: Q]를 선택하여 벡터 [eqn: V= vec{QP}]를 구하여 법선벡터와의 내적을 구한다.

그러므로 평면까지의 거리는 다음과 같이 정리된다.

[eqn: d= LEFT ∥ (V BULLET N)N RIGHT ∥]

[Back-Face Removal Algorithm]

3차원 공간에 존재하는 물체들은 대부분의 면(face)들의 집합으로 구성된다고 볼 수 있다. 여러분들이 바라보는 3차원 물체에는 보이는 면도 있을 것이고 보이지 않는 면도 존재할 것이다. 우리는 벡터의 내적 연산을 이용하여 보이는 면과 보이지 않는 면을 구별할 것이다.

먼저 여러분들이 바라보는 시선의 방향을 나타내는 벡터를 [eqn: V]라고 하자. 물체의 각 면 [eqn: F _{i}]는 그림에서 보는 것과 같이 하나의 법선벡터 [eqn: nF _{i}]를 가지고 있다. 만약 시선벡터와 면의 법선벡터와의 내적을 계산하여 그 값이 양수이면 즉, 시선 벡터와 법선벡터의 사이의 각이 [eqn: {pi } over {2}] 보다 작다는 의미이며, 이는 주어진 면의 뒷면을 바라보고 있는 형국이다. 그러므로 그 면의 앞면을 볼 수 없다.  따라서 이러한 면을 뒷면(Back-Face)이라고 한다. 내적의 값이 음수가 되면 주어진 두 벡터가 이루는 각이 [eqn: {pi } over {2}] 보다는 크다는 의미이고, 주어진 면은 앞면(Front-Face)으로 분류하게 된다. 그러므로 이러한 방법을 적용하면 주어진 물체의 뒷면을 결정할 수 있고, 컴퓨터그래픽스의 렌더링 과정에서 뒷면을 그릴 필요가 없게 되어 시간을 절약할 수 있는 방법을 얻게 되는 셈이다.

그러나 이러한 방법은 모든 물체에 적용할 수 있는 것은 아니다. 물체가 볼록 다면체인 경우에는 작 작동을 하나 그림과 같은 오목다면체에서는 원하지 않는 결과를 초래하기 때문에 일반적으로 적용할 수 없음을 알 수 있다.

[면의 법선 벡터]

세 점 [eqn: P _{0} (x _{0} ,`y _{0} ,z _{0} ),`P _{1} (x _{1} ,`y _{1} ,z _{1} ),P _{2} (x _{2} ,`y _{2} ,z _{2} )]으로 이루어진 삼각형이 있다고 하자. 이 삼각형의 법선벡터를 구해 보자.

[eqn: U=P _{1} -P _{0} `], [eqn: V=P _{2} -P _{0} `]

그러므로 주어진 면의 법선벡터는 다음과 같이 정의된다.

[eqn: N=` {U TIMES V} over {LEFT ∥ U TIMES V RIGHT ∥}]

이때 외적은 다음과 같은 값을 갖는다.

[eqn: U TIMES V= dmatrix{i&j&k#x _{1} -x _{0}&y _{1} -y _{0}&z _{1} -z _{0}#x _{2} -x _{0}&y _{2} -y _{0}&z _{2} -z _{0}}]

[왼쪽 또는 오른쪽]

평면상에 놓여 있는 점 [eqn: P(x _{1} ,`y _{1} )]이 진행하는 사선의 왼쪽 편에 있는지 오른쪽 편에 놓여 있는지 알아보는 방법을 생각해 보자.  사선의 방향 벡터를 L이라고 하자. 그리고 [eqn: S(x _{2} ,`y _{2} )] 를 사선의 시작점이라고 한다면 다음과 같이 벡터의 외적 연산을 사용하여 구하도록 한다.

[eqn: V=P-S=(x _{1} -x _{2} ,`y _{1} -y _{2} )]

[eqn: L=(a,`b)]

두 벡터의 외적은 다음과 같다.

[eqn: L TIMES V=(a,`b,`c) TIMES (x _{1} -x _{2} ,`y _{1} -y _{2} ,`z _{1} -z _{2} )]

[eqn: = dmatrix{i&j&k#a&b&0#x _{1} -x _{2}&y _{1} -y _{2}&0}]

[eqn: =(0,`0,`a(y _{1} -y _{2} )-b(x _{1} -x _{2} ))]

외적의 z-값의 부호가 양수이면 주어진 점은 사선에 대해서 왼쪽에 놓여 있게 되고, 음수의 z-값을 가지게 되면 주어진 점은 사선에 대해서 오른쪽에 놓여 있다고 판단한다.

[삼각형 면적]

주어진 삼각형의 면적은 다음과 같은 식으로 계산될 수 있다.

[eqn: S= {1} over {2} ab`sin` theta `= {1} over {2} LEFT ∥ U RIGHT ∥ LEFT ∥ V RIGHT ∥ sin` theta `]

그러므로 외적을 사용하여 다음의 식을 유도할 수 있다.

[eqn: S= {1} over {2} LEFT ∥ U TIMES V RIGHT ∥]

3.5 벡터공간

벡터 공간을 정의하기 위해서는 체(field) F (실수체(實數體), 복소수체(複素數體) 등)가 필요하며, F의 원소들을 스칼라라고 부른다. 이때 집합 V에 대해 두 연산

￭ v, w ∈ V일때 V × V → V인 연산 벡터 덧셈(v + w)

￭ v ∈ V, a ∈ F일때 F × V → V인 연산 스칼라 곱(a v)

이 정의되고 아래의 성질(공리)들을 만족하면 집합 V를 체 F 위의 벡터공간(vector space over a field F)이라 하며, V의 원소를 벡터라고 부른다.

u, v, w ∈ V이고 a, b ∈ F라 하자.

1. v+w 이 다시 V에 속한다. (덧셈에 대해 닫힘)

2. u+(v+w)= (u+v)+w. (덧셈에 대한 결합법칙)

3. V 에 0이 존재하여, V 의 임의의 원소 v에 대해 v+0=v (덧셈의 항등원 존재)

4. 임의의 [eqn: v` IN V] 에 대해, v+(-v)=0 를 만족시키는 -v 가 V 안에 존재한다.

(덧셈에 대한 역원 존재)

5. v+w=w+v. (벡터 덧셈에 대한 교환법칙)

6. a v 가 V 의 원소이다. (스칼라 곱에 대해 닫힘)

7. a (b v)=(a b) v. (스칼라 곱에 대한 결합법칙)

8. 1 이 체 F의 곱셉에 대한 항등원일 때, 1 v=v. (곱셈에 대한 항등원)

9. a (v+w)=a v+a w (벡터 덧셈에 대한 분배법칙)

10. (a+b) v=a v+b v (스칼라 덧셈에 대한 분배법칙)

이 성질들은 모듈(module)의 성질과 같다. 실제로, 벡터 공간은 체 위에서의 모듈이 된다.

성질 1부터 5까지는 V 가 벡터 덧셈에 대해 가환군(可換群)(혹은 아벨 군)을 이룬다는 것을 말하고. 성질 6부터 10까지는 V 의 원소 벡터 v에 F 의 원소 a 를 스칼라 배하는 것에 대한 성질이다. (실제로, 성질 5는 나머지 아홉 성질로부터 유도할 수 있다.)

위 성질들로부터 다음과 같은 공식을 바로 유도할 수 있다. 임의의 a ∈ F와 v ∈ V에 대해,

a 0 = 0 v = 0

-(a v) = (-a) v = a (-v)

이 성립한다.

벡터 공간은 군(群 ; group), 환(환 ; ring), 체(體 ; field) 처럼 완전히 추상적인 개념이다. 어떤 집합 V 가 벡터공간인지를 판단하기 위해서는 우선 집합 V 와 체 F 에 해당하는 집합을 정확히 기술하고, V 에서의 벡터합과 스칼라 곱을 정의해야 한다. 그리고, 정의된 두 집합과 연산이 위의 조건들을 만족하는지를 알아보면 된다.

[예제]

① 가장 친숙한 벡터 공간으로는 유클리드 공간이 있다. [eqn: R ^{n} _{{} ^{}}]으로 표기하며, 원소는 n개 실수의 순서쌍이다. 연산은 실수에서의 연산을 각 성분에 적용시키면 된다. 이 공간을 일반화하여 체 F위의 벡터 공간 Fn을 얻는다. 각 성분이 복소수인 (mxn) 행렬의 집합은 C 상의 벡터 공간이 된다. 일반화하여 어떤 체 F의  원을 성분으로 갖는 (mxn) 행렬 공간을 생각할 수 있다.

② 닫힌 구간 [a, b]에서 연속인 모든 실함수의 집합 C[a, b]는 R 상의 벡터 공간이다.

③ F 상의 벡터 공간 V 와 어떤 집합 X 가 주어졌을 때, X 에서 V 로의 함수 f: X -> V 들의 집합은 F 상의 벡터 공간을 이룬다. F 의 원을 계수로 취하는 모든 다항식의 집합 F[x]는 F 상의 벡터 공간이다.  유한체(finite field) GF(pn)는 GF(p) 상의 벡터공간이다.

④ C는 R상의 벡터공간이다.

⑤ R은 Q상의 벡터공간이다 (Q는 유리수 전체의 집합이다.)

특별히, 실수 집합 R 위의 벡터공간을 실벡터공간(real vector space)이라고 하며 복소수 집합 C 위의 벡터공간을 복소벡터공간(complex vector space)라고 한다. 벡터 공간에 성질을 추가하여 만든 구조로는 거리의 개념을 준 노름 공간(normed vector space), 각의 개념을 준 내적 공간(inner product space), 위상적 성질을 가진 위상 벡터 공간(topological vector space), 벡터 곱을 준 다원환(algebra) 등이 있다.

3.6 벡터 기저

[선형 독립]

일차 독립, 선형 독립(linear independence)이란 특정 벡터의 모임 중 어떤 벡터도 나머지 벡터들의 선형결합으로 만들어 질 수 없는 경우를 말한다. 만약 어떤 벡터가 다른 벡터의 선형결합으로 이루어질 수 있다면, 이것은 일차 종속, 선형 종속(linear dependence)이라고 한다.

벡터 [eqn: v _{1} ,`v _{2} ,` CDOTS ,v _{n}]가 있을 때,

[eqn: a _{1} v _{1} +a _{2} `v _{2} +a _{3} v _{3} +` CDOTS +a _{n} v _{n} =0]

의 식을 만족하는 수 [eqn: a _{1} ,`a _{2} ,` CDOTS ,`a _{n}]이 존재하고 모두 0이 아닐 때(즉, 0이 아닌 값이 적어도 하나 존재할 때) 이 벡터들은 일차 종속이다. 만약 의 해가 모두 0인 경우밖에 없다면 일차 독립이다.

만약 벡터 [eqn: v _{1} ,`v _{2} ,` CDOTS ,v _{n}]이 종속이라면 다음 수식에서

[eqn: a _{1} v _{1} +a _{2} `v _{2} +a _{3} v _{3} +` CDOTS +a _{n} v _{n} =0]

0 이 아닌 값이 존재할 것이고, 그 값을 [eqn: a _{m}]이라 하자. 그러면

[eqn: v _{m} =` {-1} over {a _{m}} (a _{1} v _{1} +` CDOTS +a _{m-1} v _{m-1} +a _{m+1} v _{m+1} +`+a _{n} v _{n} )]

이다. 그러므로 벡터 [eqn: v _{m}]은 다른 벡터들의 선형 조합으로 표현할 수 있으며, 다른 벡터들에 따라 결정되어지므로 다른 벡터들에 종속되었다고 볼 수 있다.

다음 그림은 여러 벡터들에 대한 선형독립과 선형종속을 나타내고 있다.

벡터들의 집합 [eqn: LEFT { U _{1} ,`U _{2} RIGHT }]는 선형독립이며, [eqn: LEFT { U _{1} ,`U _{3} RIGHT }]는 선형종속이다. [eqn: LEFT { U _{1} ,`U _{2} ,`U _{3} ,`U _{4} RIGHT }] 또한 선형종속이다. 여기에서 공간의 차원과 함께 선형독립성을 살펴 볼 수 있다. 이차원 공간에 있는 벡터들은 좌표계가 2개 필요하다. 각 좌표계는 서로 선형독립이 되어야 할 것이다. 그러므로 2차원 공간의 모든 벡터는 2개의 선형독립에 벡터들의 선형조합으로 표현될 수 있기 때문에 3개 이상부터의 2차원 벡터들의 집합은 선형종속임을 알 수 있다. 또한 2차원 공간에서 1개의 벡터는 선형독립이며, 2개의 벡터는 동일한 직선에 놓여 있지 않다면 선형독립이며 반대로 동일한 직선에 놓여 있다면 두 벡터는 서로 종속 관계에 있다고 할 수 있다.

3차원 공간에 있는 벡터를 표현하기 위해서는 3개의 서로 다른 축이 필요하다. 그러므로 3차원 공간에서의 선형독립인 벡터들의 집합은 3개 까지만 가능하다. 만약 4개 이상의 벡터들의 집합은 서로 다른 벡터들의 선형조합으로 표현 가능하기 때문에 선형종속이다.

[벡터 기저]

벡터공간을 표현할 수 있는 기본 잣대가 필요한데 수학에서는 이러한 것을 그 공간의 기저((Basis)라고 한다. 기저는 그 공간에 놓여 있는 벡터들로 구성된 것으로 먼저 선형독립이어야 하며, 이들의 선형 조합으로 그 공간에 있는 모든 점을 표현할 수 있어야 한다는 규정이 있다. 예를 들면, 2차원 공간에서는 [eqn: x]축,  [eqn: y]축을 의미하게 되며, 3차원 공간에서는 [eqn: x]축, [eqn: y]축, z축 이다.

우리는 이러한 직교좌표계에 익숙해져 있는데 주어진 기저의 벡터들이 성호 수직이 아닌 경우는 어떻게 해야 하나? 주어진 벡터들을 서로 수직이 되게 하는 알고리즘인 Gram-Schmit 알고리즘을 소개한다.

[그램-슈미트 직교화]

n 개의 일차독립 벡터들로 이루어진 집합 [eqn: B= LEFT { u _{1} ,`u _{2} ,` CDOTS ,`u _{n} RIGHT }]이 주어졌을 때 상호 수직인 벡터들의 집합 [eqn: B ^{ prime } = LEFT { u _{1} prime ,`u _{2} prime ,` CDOTS ,`u _{n} prime RIGHT }]을 다음과 같은 규칙을 따라 생성할 수 있다.

① [eqn: u _{1} prime =u _{1}]이라 둔다.

② 두 번째 벡터 [eqn: u _{2} prime]을 다음과 같이 구한다.

[eqn: u _{2} prime =u _{2} - {u _{2 BULLET } u _{1} prime } over {LEFT ∥ u _{1} prime RIGHT ∥ ^{2}} u _{1} prime]

③ n 번째까지 다음 관계식을 따라 구한다.

[eqn: u _{i} prime =u _{i} - sum _{k=1} ^{i-1} {u _{i BULLET } u _{k} prime } over {LEFT ∥ u _{k} prime RIGHT ∥ ^{2}} u _{k} prime]

n	일반 basis 를 orthogonal basis로 바꾸는 방법은 있을까 ?

o	Gram-schmit Orthogonalization

o

n