본문 바로가기
42/42cursus

[miniRT] 1. 벡터에 대한 이해

by jaemjung 2022. 6. 14.

본 과제는 3차원 공간 상의 물체를 레이트레이싱을 활용하여 렌더링하는 프로그램을 작성하는 것이 목표로, 과제 수행을 위해선 벡터에 대한 기본적인 이해가 필수적이다.

 

그동안 해왔던 과제와는 결이 다른 생소한 내용이기에, 본 과제에서 필요한 개념적인 내용들을 먼저 정리해보기로 하자.

 

1. 벡터란?

벡터는 벡터공간 내에서 크기와 방향의 의미를 모두 포함하는 표현 도구이다.

 

크기와 방향을 포함하여 특정한 수치를 표현할 수 있다는 점에서 물리량을 표현하기에 적합한 도구이다.

본 과제에서는 특정한 위치에서 발사된 빛이 물체에 부딛혀 카메라까지 도달할 때, 빛의 궤적을 계산하고 그 결과를 화면 상에 뿌려주기 위해 벡터가 사용된다.

벡터를 표현하는 데 있어 중요한 것은 방향과 크기로, 그 시점과 종점은 중요하지 않다.

방향과 크기가 같다면 다른 위치에 있어도 동일한 벡터로 취급된다.

 

2. 벡터의 크기

벡터의 크기는 시점부터 종점까지의 길이이다.

즉, 벡터의 시점과 종점을 잇는 선분의 길이가 곧 벡터의 크기이며, 해당 값은 피타고라스의 정리를 이용하여 다음과 같이 구할 수 있다.

(벡터 v의 크기는 수식 상에서 || v || 로 표기한다.)

 

벡터의 norm이라고 부르기도 한단다..

 

3. 단위벡터와 정규화

단위벡터는 벡터의 크기가 1인 벡터이다.

사칙 연산을 할 때 임의의 수 n에 어떤 수를 넣더라도 항상 n이 나오게 하는 수를 n에 대한 항등원이라고 하는데, 벡터의 항등원이 바로 단위벡터이다. 

단위벡터는 크기가 1이기 때문에 특정한 스칼라 값을 곱하여 방향을 유지하면서 원하는 길이의 벡터를 생성할 수 있게 된다.

 

모든 벡터는 각 성분을 길이로 나눠주는 과정을 통해 단위벡터로 변환할 수 있는데, 이를 정규화라고 한다.

 

4. 벡터의 덧셈

두 벡터의 대응되는 성분을 각각 더해주면 벡터 간의 덧셈이 가능하다. 단, 더하고자 하는 두 벡터는 반드시 동일한 차원 상에 있어야 한다.

벡터의 덧셈에서는 교환법칙과 결합법칙이 성립한다.

 

벡터 v와 벡터 u의 덧셈, v+u = r

벡터의 덧셈을 이용하면 한 위치에서 임의의 방향으로 임의의 거리만큼 이동한 지점을 구할 수 있다.

 

5. 벡터의 뺄셈

덧셈과 마찬가지로 두 벡터의 대응되는 성분끼리 빼주면 벡터 간의 뺄셈이 가능하다.

벡터 v와 벡터 u의 뺄셈, u - v = w

벡터의 뺄셈을 이용하면 한 위치에서 다른 위치를 바라보는 방향의 벡터를 구할 수 있다.

6. 벡터의 내적

벡터의 내적은 두 벡터의 각 성분을 곱한 후 모두 더해준 값으로 나타낼 수 있다. Dot product, 혹은 스칼라곱이라고도 불린다. 즉, 벡터의 내적 값은 벡터가 아닌 스칼라 값이다.

벡터의 내적값을 이용하여 두 벡터의 사이각을 구할 수 있다.

이때 중요한 점! 두 벡터가 단위벡터일때 서로가 직교한다면, 즉 두 벡터의 사이각이 90도라면 내적값은 0, 두 벡터가 평행하다면 내적값은 1이 나온다.

 

7. 벡터의 외적

벡터의 외적은 내적과는 달리 결과값이 또다른 벡터이며, 3차원 이상의 공간에서만 정의될 수 있다.

3차원 벡터의 외적은 위와 같이 계산할 수 있다. 교환법칙 성립하지 않음!!!

두 벡터의 외적으로 생성된 벡터는 각 벡터와 수직하게 된다. 즉, 이를 이용하면 한 평면의 법선벡터를 구할 수 있다.

 

한 평면에서 수직으로 뻗어나가는 벡터를 구할 수 있게 된다.

 

댓글