2022. 7. 20. 23:45ㆍComputer Sciences/Game Mathemathics
인프런 <게임 엔진을 지탱하는 게임 수학>의 이득우 교수님 강의를 보며 공부한 글입니다.
1. 벡터(Vector)의 정의
수직선에서의 표현의 한계
- 수를 점으로 표현한다면, 1차원의 도형인 수직선 위에 있는 것들만 표현이 가능
- 즉, 1차원 상에서 의미있는 무언가를 표현하기에는 주어진 공간이 부족
- 최소한 2차원의 평면은 되어야 시각적으로 원하는 그림을 그리는 등의 추가적인 표현이 가능해짐
- 따라서 수가 가지고 있는 영역을 1차원이라고 하면, 확장한 2차원의 영역으로 어떻게 확장했을까?
데카르트 좌표계(Cartesian Coordinate System)의 등장
- 흔히 수학에서 2차원을 많이 표현하는 방법
- 수의 시스템을 기반으로 영역을 확장해 표현하는 방식
- 두 실수 집합을 교차시켜 평면을 표현하고, 오른쪽과 위쪽을 +방향으로 지정
- 즉, 데카르트 좌표계라는 것은 수가 하나의 직선이라고 바라본다면, 해당 직선에 90도로 새로운 직선을 교차시켜 평면을 표현하는 방식
- 여기서 90도로 교차시킨다는 것을 직교한다고 표현
- 직교의 의미는 여러 가지가 있지만, 가로축의 실수 집합과 세로축의 실수 집합이 서로 연관이 없다는 것을 의미
- 이렇게 평면은 여기에 무언가 시각적으로 의미있는 것들을 다룰 수 있는 무대를 만들었다고 볼 수 있음
- 이렇게 영역을 확장한 모습은 두 실수 집합을 곱집합으로 확장한 \(\mathbb{R} \times \mathbb{R}\)로 볼 수 있음
- 곱집합의 원소는 순서쌍이므로 두 집합의 원소를 각각 미지수 \(x\)와 \(y\)로 두면, 이는 \((x, y)\)로 표현할 수 있음. 이를 좌표(Coordinate)라고 함.
2차원 평면의 시각화
- 좌표에 해당하는 대상을 점으로 표현할 수 있음
- 수와 동일하게 지정한 위치에 점을 찍거나, 원점으로부터 화살표로 표현할 수도 있다.
- 언제 점으로 표현하고, 언제 화살표로 표현하는지에 대해서는 이후에 아핀 공간이라는 개념에서 다시 볼 예정. 지금은 우선 2가지 방식이 있다는 것으로만 이해
직선과 평면의 비교
- 기존에 수 집합으로 표현한 직선과 곱집합으로 표현한 평면의 표현 방법을 집합과 원소의 관점에서 바라보려고 함
- 직선의 경우, 실수 집합의 원소를 사용하여 직선을 표현하였음
- 평면의 경우, 실수의 곱집합 순서쌍을 통해 평면에 표기할 수 있는 기반이 마련되었음
- 이렇게 확장된 실수의 곱집합 \(\mathbb{R} \times \mathbb{R}\)의 공간 체계는 수가 아니기 때문에, 이를 대상으로 규정할 필요가 있음
- 이를 벡터(Vector)와 벡터 공간(Vector space)이라 규정하였음
벡터(Vector)와 벡터 공간(Vector Space)
- 벡터와 벡터 공간이라는 것을 별도로 정의하여 2차원 평면과 더 나아가 3차원, 4차원으로 확장될 때까지,
수와 수집합의 개념을 벡터와 벡터 공간이라고 확장하여 부른다고 할 수 있음 - 실제로 실수를 사용하는 수 집합을 체 집합의 관점에서 바라보아, 이들이 곱집합을 이룬다고 더 넓은 관점에서 보는 것이 유용
- 즉, 특정 수 집합을 지정하는 것이 아닌 보편적인 수의 구조를 사용해 정의하는 것
- 벡터 공간은 집합의 개념으로 보았을 때, 보다 넓은 관점으로 확대하여 두 개의 체 집합의 곱집합이라고 해석할 수 있다.
- 집합 : 체의 성질을 가지는 수 집합의 곱집합으로부터 만들어낸 대상
- 원소 : 스칼라의 순서쌍 (체 집합의 원소는 스칼라라고 부른다 하였음)
- 결국 벡터라는 것은 이러한 스칼라 순서쌍들을 조합한 요소라고 정의할 수 있음
- 벡터 공간은 집합의 개념, 벡터는 원소의 개념
2. 벡터의 연산 (Vector Operations)
- 일반적인 집합은 단순히 모든 요소들을 나열하고 묶은 것을 의미
- 수 집합은 일반 집합과 다르게 그들 내의 이항 연산이라는 시스템을 통해 새로운 무언가를 만들어 낼 수 있음
- 벡터(Vector) 또한 단순 일반 집합 개념으로 본다면, 정적인 물체를 표현하는 원소와 집합에 불과
- 하지만 시간에 따라서 움직이는 애니메이션을 진행하는 시스템을 구현하고 싶다면?
- 마찬가지로 벡터 공간의 체계에서도 수 집합과 같은 이항 연산 시스템이 필요
- 이것이 벡터의 기본 연산이라고 볼 수 있음
벡터의 기본 연산
벡터와 벡터의 덧셈
$$ (a,b)+(c,d)=(a+c,b+d) $$
- 각 순서쌍의 순서에 해당하는 원소들을 개별적으로 서로 더하는 것
- 두 실수 집합이 서로 직교하였기 때문에 서로 연관성 없이 독립적으로 동작하기 때문
- 벡터라는 개념은 처음엔 두 개의 집합의 곱집합으로 시작하지만, 이 곱집합에 또 하나의 체 집합을 곱집합하면 세 개의 곱집합이 됨 (이런 식으로 네 개의 곱집합 등 쭉 확장할 수 있음)
벡터와 스칼라의 곱셈
$$ k\cdot (a,b)=(ka,kb) $$
$$ (a,b)\cdot k =(ak,bk) $$
- 체 집합으로 실수를 사용한다면, 벡터와 실수의 곱으로 생각할 수 있지만 좀 더 넓은 의미로 벡터와 스칼라의 곱으로 생각하는 것이 유리
- 스칼라는 어떤 수 집합을 사용하냐에 따라 달라질 수 있음 (유리수, 복소수, ...)
- 체의 공리를 만족하는 수 집합을 사용하면, 위와 같은 연산 구조를 가지고 있기 때문에 상관이 없다.
- 벡터를 원점으로부터의 화살표로 표시한다고 생각해본다면, 여기엔 흔히 말하는 기울기라는 것이 존재
- 이러한 벡터가 가지고 있는 기울기를 따라서 형성된 무한대의 직선 위에 벡터와 스칼라의 곱셈으로 인해 생성된 새로운 벡터는 언제나 해당 기울기의 무한대 직선 위에 위치
- 위 그림에서 벡터와 스칼라의 곱으로 새로 생성된 화살표와 해당 벡터의 기울기에 따라 형성된 무한대의 직선
- 벡터와 스칼라의 곱셈은 어찌 보면 1차원적인 벡터의 생성 방법이라고도 볼 수 있다. (선 위에서만 존재하기 때문)
중간 정리
- 벡터와 벡터의 덧셈은 서로 관련이 없는 \(x\)와 \(y\)가 각각 평행 이동하는 시각적인 결과를 가져온다.
- 벡터와 스칼라의 곱셈은 원점을 중심으로 어떠한 벡터를 생성했을 때, 같은 기울기를 가지는 무한대의 안 보이는 직선 위에서만 벡터를 생성
- 원점을 기준으로 양의 방향과 음의 방향을 모두 포괄하는 어떤 특정한 기울기의 선 위에 새로운 1차원 벡터를 생성하는 시스템
- 이러한 벡터와 벡터의 덧셈과 벡터와 스칼라의 곱셈은 이후 벡터의 내적과 외적에 응용하기 위한 기본 연산
벡터의 크기(Norm)
- 수의 크기는 원점으로부터의 거리 \(|x|\) 라고 하였음
- 벡터의 크기 = 원점으로부터의 최단 거리 \( |v|=\sqrt{x^2+y^2} \) (노름(Norm)이라고도 함)
- 학문적으로는 노름(Norm)이라고 이야기하고, 응용할 때는 용도에 따라 길이가 될 수도 크기가 될 수도 있음
- 벡터의 크기는 \( ||v|| \) 로도 표현하지만, 본 글에서는 간결하게 \( |v| \) 을 사용
단위 벡터 (Unit Vector)
- 벡터의 크기가 1인 벡터를 의미
- 벡터의 각 성분을 벡터의 크기만큼 나누어주면 단위 벡터를 만들 수 있다. 이러한 과정을 벡터 정규화(Normalize)라고 함
$$ \vec{v}(x, y) \ \rightarrow \ \vec{v}(\frac{x}{\sqrt{x^2 + y^ 2}}, \frac{y}{\sqrt{x^2 + y^ 2}})$$
예를 들어, \(\vec{v}(3, 4) \) 가 있다면, 이 벡터의 크기는 5가 된다. 이를 단위 벡터로 만드는 과정은 다음과 같다.
$$ \vec{v}(3, 4) \ \rightarrow \vec{v}(\frac{3}{5}, \frac{4}{5})$$
이 과정이 진짜로 맞는지 확인하려면, 피타고라스의 정리를 통해 크기가 1이 나오는지 확인하면 된다.
$$ (\frac{x}{\sqrt{x^2 + y^2}})^2 + (\frac{y}{\sqrt{x^2 + y^2}})^2 = \frac{x^2}{x^2 + y^2} + \frac{y^2}{x^2 + y^2} = 1 $$
3. 벡터 공간의 공리
- 이러한 벡터의 연산은 벡터 공간이라는 큰 집합의 개념에서 새로운 벡터를 생성하는 닫힌 시스템으로 바라봐야 함
- 벡터 공간의 시스템은 항상 수를 시스템적인 측면에서 분석한 체(Field)의 시스템을 기반으로 확장해 만든 시스템
- 총 8개의 공리로 구성되어 있음
- \(u, v, w\)는 벡터, \(a, b\)는 스칼라를 의미
덧셈 연산의 결합법칙
$$ u+(v+w)=(u+v)+w $$
덧셈 연산의 교환법칙
$$ u+v=v+u $$
덧셈 연산의 항등원
$$ v+\vec{0}=v $$
각각 모든 요소가 0인 \(\vec{0}\) (영벡터)가 존재할 때, 각각의 요소에 대해 0을 더하면 덧셈의 항등원이 0이기 때문에 결국 벡터의 값은 변하지 않는다. 따라서, 벡터 공간에서 덧셈 연산의 항등원은 영벡터라고 정의할 수 있다.
덧셈 연산의 역원
$$ v+(-v)=\vec{0} $$
벡터 공간에서 덧셈 연산의 항등원이 존재하기에 역원 또한 정의할 수 있다. 영벡터를 만들어 주는 것은 그 벡터 앞에 -를 붙여준, 반대 방향으로 향하는 벡터를 의미한다. 이것이 벡터 공간에서의 덧셈 연산의 역원.
스칼라 곱셈 연산의 호환성(Compatibility)
$$ a(bv)=(ab)v $$
벡터 공간에는 벡터만 존재하는 것이 아닌, 벡터 공간을 형성하는 기반인 체(Field)라는 수 집합의 구조가 자리잡고 있다. 그렇기 때문에 벡터 공간은 체 집합의 기반 위에서 움직일 수 밖에 없다. 따라서 스칼라(Scalar)라는 요소를 같이 고려할 수 밖에 없다. (수 집합과 벡터의 차이점)
이 스칼라 곱셈에 대해서는 호환성이라는 것이 존재하는데, 스칼라 값을 어떤 걸 쓰더라도 순서를 바꿔도 결과는 동일하다는 내용이다. 사실상 곱셈의 교환법칙과 결합법칙을 만족하기 때문에 당연한 소리.
스칼라 곱셈 연산의 항등원
$$ 1v=v $$
스칼라 곱셈 또한 1을 각각의 요소에 곱해줘도, 곱셈의 항등원이기 때문에 동일한 결과를 가져오게 된다.
따라서, 스칼라 곱셈의 항등원은 1이라고 할 수 있다.
벡터 덧셈과 스칼라 곱셈의 분배법칙
$$ a(u+v)=au+av $$
덧셈 연산과 곱셈 연산 두 가지를 동시에 사용하면 분배법칙을 만들 수 있다. 벡터를 다룰 때는 벡터와 스칼라 두 가지 요소를 다루기 때문에 덧셈 연산을 적용하는 원소가 벡터일 경우, 위 식과 같은 형태로 표현이 가능.
즉, 각각의 벡터에 스칼라 값을 곱한 것으로 분배법칙이 성립.
스칼라 덧셈과 스칼라 곱셈의 분배법칙
$$ (a+b)v=av+bv $$
이것 역시 개별적으로 각각 곱한 것과 동일한 분배법칙이 성립한다. 벡터가 벡터와 스칼라 두 가지 요소가 존재하기 때문에 분배법칙이 두 가지로 나뉜다.
Final. 마무리
벡터 공간의 정의는 어떤 기반이 되는 체 집합 위에서, 체 집합이 가지고 있는 요소들을 순서쌍으로 묶어 원소를 만들고, 이를 확장한 개념이라고 하였다.
하지만 실제로 이걸 사용하려면 수 집합을 지정해줘야 하는데, 일반적으로 실수 집합을 가장 많이 사용한다. 이렇게 실수 집합을 수 집합으로 사용하는 벡터 공간을 실 벡터 공간(Real vector space)라고 부른다. 실 벡터 공간을 사용하여 평면 위에 무언가를 표현할 것이고, 이것이 곧 컴퓨터 그래픽 구현에 대한 첫 걸음이 될 것이다.
'Computer Sciences > Game Mathemathics' 카테고리의 다른 글
[게임 수학] #6 | 삼각함수(2) : 각의 측정법 (0) | 2022.07.25 |
---|---|
[게임 수학] #5 | 삼각함수(1) : 삼각함수의 개념 (0) | 2022.07.25 |
[게임 수학] #4 | 선형 독립(Linear Independent) (0) | 2022.07.21 |
[게임 수학] #2 | 함수(Function) (0) | 2022.05.05 |
[게임 수학] #1 | 수(Numbers)의 구조 (2) | 2022.05.05 |