
벡터의 내적 (inner product)와 벡터의 정사영 (projection)
2020, Aug 26
- 참조 : 이득우의 게임 수학
- 본 글에서는 벡터의 내적의 내용과 대표적인 벡터의 내적의 사용처인 정사영 (projection)에 대하여 간략히 다루어 보도록 하겠습니다. 추가적으로 벡터의 내적을 활용하는 몇가지 예시를 더 살펴보겠습니다.
- 벡터의 정사영 부분이 필요하시면 아래
scalar projection → vector projection
부분부터 읽어보시면 됩니다.
목차
-
벡터의 내적 정의 및 성질
-
scalar projection → vector projection
-
vector projection 바로 구하기
-
두 벡터의 방향 확인과 시야 판별
-
조명 효과 표현
벡터의 내적 정의 및 성질
- 벡터의 내적은 같은 차원의 두 벡터가 주어졌을 때, 벡터를 구성하는 각 성분을 곱한 후 이들을 더해 스칼라 값을 만들어내는 연산을 의미합니다.
- →u=(a,b)→u=(a,b)
- →v=(c,d)→v=(c,d)
- →u⋅→v=a⋅c+b⋅d→u⋅→v=a⋅c+b⋅d
- 벡터의 내적은 곱셈과 덧셈으로 구성되어 있으므로
교환 법칙
은성립
합니다. - 벡터의 결과가 스칼라이므로
결합 법칙
은성립하지 않습니다.
- 벡터의 덧셈에 대한
분배법칙
은성립
합니다.
- 같은 벡터를 내적하면 벡터의 크기를 제곱한 결과가 나옵니다.
- (x,y)⋅(x,y)=x2+y2(x,y)⋅(x,y)=x2+y2
- ∴→v⋅→v=|→v|2∴→v⋅→v=|→v|2
- 내적은
교환법칙
과분배법칙
이 성립하기 때문에 아래와 같이 두 벡터 합의 내적은 두 벡터의 크기로 표현할 수 있습니다.
- (→u+→v)⋅(→u+→v)=→u⋅→u+→v⋅→v+2(→u⋅→v)=|→u|2+|→v|2+2(→u⋅→v)(→u+→v)⋅(→u+→v)=→u⋅→u+→v⋅→v+2(→u⋅→v)=|→u|2+|→v|2+2(→u⋅→v)
내적과 삼각함수와의 관계
- 벡터의 내적은 아래 그림과 같이 두 벡터의 사이각에 대한
cos
함수와 비례하는 특징을 가집니다.

- →u⋅→v=|→u||→v|cos(θ)→u⋅→v=|→u||→v|cos(θ)
- 위 식이 유도된 방법을 살펴보면 다음과 같습니다.

- →b=→a−→c→b=→a−→c
- 위 식을 이용하여 식을 전개해 보도록 하겠습니다.
- |→b|2=→b⋅→b=(→a−→c)⋅(→a−→c)=|→a|2+|→c|2−2→a→c|→b|2=→b⋅→b=(→a−→c)⋅(→a−→c)=|→a|2+|→c|2−2→a→c(1)
- 다음으로 다음과 같이 식을 전개해 보도록 하겠습니다.
- |→b|2=|→c|2sin2(θ)=(|→a|−|→c|cos(θ))2+|→c|2sin2(θ)(∵(|→a|−|→c|cos(θ))=0)=|→a|2−2|→a||→c|cos(θ)+|→c|2cos2(θ)+|→c|2sin2(θ)=|→a|2+|→c|2−2|→a||→c|cos(θ)|→b|2=|→c|2sin2(θ)=(|→a|−|→c|cos(θ))2+|→c|2sin2(θ)(∵(|→a|−|→c|cos(θ))=0)=|→a|2−2|→a||→c|cos(θ)+|→c|2cos2(θ)+|→c|2sin2(θ)=|→a|2+|→c|2−2|→a||→c|cos(θ)(2)
- 식 (1) 과 식 (2)을 이용하여 정리하면 벡터의 내적 식을 구할 수 있습니다.
- |→a|2+|→c|2−2→a→c=|→a|2+|→c|2−2|→a||→c|cos(θ)|→a|2+|→c|2−2→a→c=|→a|2+|→c|2−2|→a||→c|cos(θ)
- →a⋅→c=|→a||→c|cos(θ)→a⋅→c=|→a||→c|cos(θ)(3)
- 식 (3)에서 두 벡터 →a,→c→a,→c 의 크기가 1이면 두 벡터의 내적은 cos(θ)cos(θ) 가 됩니다.
- →u⋅→v=cos(θ)(where, |→u|=1,|→v|=1)→u⋅→v=cos(θ)(where, |→u|=1,|→v|=1)
- 이와 같은 원리를 이용하면 두 벡터의 내적이 0인 경우에 대한 조건이 cos(θ)=0cos(θ)=0 이 되는 것을 알 수 있으며 이 때 사이각은 90도 또는 270도인 경우 임을 알 수 있습니다.
- 대표적인 직교하는 벡터는
표준 기저 벡터
가 있습니다. (1, 0) 과 (0, 1) 은 가장 기본적인 표준 기저 벡터이며 두 벡터의 내적은 0이되고 좌표계 상에서도 직교함을 알 수 있습니다.
-
scalar projection → vector projection
- 먼저
scalar projection
에서vector projection
으로 확장하는 관점에서vector projection
에 대하여 알아보겠습니다. scalar projection
은 한 벡터에서 다른 벡터로projection
을 하였을 때projection
된 벡터의 시작점에서projection
된 지점까지의거리(크기)
를 나타냅니다.- 반면
vector projection
은projection
된 벡터의 시작점에서 projection된 지점까지의 거리만큼의 크기를 가지는벡터
를 나타냅니다. - 그러면 두 벡터 r,sr,s 가 있고 벡터 ss 를 벡터 rr 에
projection
시킨다는 가정하에scalar projection
과vector projection
을 구하는 방법에 대하여 알아보겠습니다.
- 먼저
scalar projection
방법에 대하여 알아보도록 하겠습니다.

- cosθ=adjhyp=adj|s|cosθ=adjhyp=adj|s|
- adj=|s|cosθadj=|s|cosθ
- 위 식을 두 벡터의 내적의 성질에 접목시켜 보겠습니다. 두 벡터의 내적은 다음을 따릅니다.
- r⋅s=|r||s|cosθr⋅s=|r||s|cosθ
- 따라서 앞의 식을 접목시키면 다음과 같습니다.
- adj=|s|cosθ=r⋅s|r|=ˆr⋅sadj=|s|cosθ=r⋅s|r|=^r⋅s
- 지금 까지가
scalar projection
에 관한 내용이었습니다. 즉, 위 그림과 같이 두 벡터 r,sr,s를 이용하여 파란색의 길이를 알 수 있습니다. - 그럼 여기서
vector projection
으로 개념을 확장시켜 보겠습니다. 아시다시피 벡터는 크기와 방향을 가집니다. 따라서scalar projection
에 방향을 추가하면 됩니다.

- vector projection=scalar projection×unit vector=r⋅s|r|⋅r|r|=r⋅s|r|⋅|r|⋅r=r⋅sr⋅r⋅rvector projection=scalar projection×unit vector=r⋅s|r|⋅r|r|=r⋅s|r|⋅|r|⋅r=r⋅sr⋅r⋅r
unit vector
를 포함한 형태로 나타내면 다음과 같습니다.
- vector projection=scalar projection×unit vector=r⋅s|r|⋅r|r|=(ˆr⋅s)⋅ˆrvector projection=scalar projection×unit vector=r⋅s|r|⋅r|r|=(^r⋅s)⋅^r
- 위 식은
scalar projection
에서 구한 길이값에 방향인 유닛 벡터를 곱하여vector projection
을 하는 식입니다. - 위 계산 과정을 보면
scalar projection
은 projection 된 벡터의 유닛 벡터(ˆr^r )와projection
한 벡터(ss)의 내적이 됨을 알 수 있습니다. vector projection
은 벡터이기 때문에 개념적으로 스칼라 값에 유닛 벡터를 곱하면 됩니다. 따라서 위 식과 같이 유도될 수 있습니다.
-
vector projection 바로 구하기
- 이번에는 vector projection을 바로 구해보도록 하겠습니다.

- 위 그림에서는 →b→b를 →a→a에 projection 시킵니다. 이것은 →b→b로부터 →a→a에 수직인점 까지의 길이를 가지며 →a→a와 같은 방향을 갖는 벡터를 찾는것을 의미합니다.
- 그리고 →a→a에서 projection 한 점 까지의 벡터를 →x→x로 나타내고 변수 pp를 도입하여 →x=p→a→x=p→a로 정의하겠습니다.
- 먼저 projection한 벡터와 →a→a의 내적은 0입니다. 왜냐하면 사이각이 직각이기 때문에 앞에서 다룬 내적의 성질에 의해 0이 되게 됩니다.
- (→b−p→a)T→a=0(→b−p→a)T→a=0
- 위 관계식을 이용하여 pp를 정의해 보겠습니다.
- →bT→a−p→aT→a=0→bT→a−p→aT→a=0
- p=→bT→a→aT→ap=→bT→a→aT→a
- →x=p→a=→bT→a→aT→a→a→x=p→a=→bT→a→aT→a→a
- 이번 방법에서도 앞에서 정리한 방법과 동일한 결과의 vector projection을 구할 수 있었습니다.
- 특히 두 unit vector의 내적은 1이기 때문에 →a→a가 unit vector라면 다음과 같습니다.
- →x=p→a=(→bT→a)→a→x=p→a=(→bT→a)→a
- 이와 같은 방법으로 벡터를
projection
하면 다양하게 사용될 수 있습니다. 가장 간단한 예시로 카메라 공간을 분석할 때에도 활용 할 수 있습니다.

- 위 그림에서는 어떤 물체의 거리를 알 때, 카메라가 촬영하는 방향으로의 깊이 정보를 알고 싶을 때,
projection
을 통하여 구할 수 있음을 나타냅니다.
두 벡터의 방향 확인과 시야 판별
- 벡터의 내적 성질은 유용하게 사용 가능하며
projection
을 구하는 것 이외에도 다양한 응용으로 사용할 수 있습니다. - 대표적인 사용 방법으로 두 벡터의 방향 확인이 있습니다.
- 벡터의 내적으로 구할 때 벡터의 크기 값은 언제나 양수이므로 벡터 내적의 부호는 cos(θ)cos(θ) 가 결정하며 이 값은 다음과 같습니다.

- 위 그래프와 같이 cos(θ)cos(θ) 는 주황색 영역에서 양수의 값을 가지고 파란색 영역에서 음수의 값을 가집니다. 즉, θ=(−π/2,π/2)θ=(−π/2,π/2) 까지는 양의 부호를 가지므로 벡터 내적의
부호
를 이용하면 두 벡터의 방향을 알 수 있습니다.

- 위 그림과 같이 벡터 내적의 결과가 양수이면 두 벡터는 같은 방향을 향하고 있습니다. 반면 벡터 내적의 결과가 음수이면 두 벡터는 다른 방향을 향하고 있다고 말할 수 있습니다.
- 이 방향을 카메라의 촬영 방향이라고 하면 벡터의 내적이 양수이면 같은 방향으로 바라보고 있다고 볼 수 있고 벡터의 내적이 음수이면 서로 반대 방향을 본다고 말할 수 있습니다.
- 마지막으로 벡터 내적의 결과가 0이면 두 벡터는 서로 직교합니다.
조명 효과 표현
- 조명 효과를 주기 위하여 빛의 반사를 표현할 때,
Lambertian reflection
모델을 사용합니다. 내용은 굉장히 간단합니다. - 어떤 광원이 물체를 향헤 직사광선을 발사할 때, 빛을 받아 표면에 반사되는 빛의 세기는 두 벡터가 만드는 사잇각의 cos(θ)cos(θ) 함수에 비례한다는 것이
Lambertian reflection
모델의 주요 내용입니다.

- 위 그림에서 ˆN^N 은 표면의 법선 벡터의 단위 벡터입니다. 즉, 표면이 향하는 방향의 벡터입니다. ˆL^L 은 표면에서 광원으로 향하는 벡터의 단위 벡터 입니다.
- 두 벡터가 모두 단위 벡터로 설정되었으므로 두 벡터의 내적으로 사용하면
Lambertian reflection
모델에 필요한 사잇각을 구할 수 있습니다.
- ˆN⋅ˆL=cos(θ)^N⋅^L=cos(θ)