일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- enumasByue
- 스마트포인터
- unorder_map
- moreeffectiveC++
- stl
- UE4 커스텀로그
- C++
- 언리얼가비지컬렉터
- 정렬
- 알고리즘
- 람다
- dataasset
- 데이터애셋
- 약참조
- 애셋로드
- 크리티컬섹션
- UELOG
- BFS
- UE_LOG
- 델리게이트
- 자료구조
- 언리얼엔진구조체
- 정렬알고리즘
- 강참조
- UML관련
- 프로그래머스
- map
- C++최적화
- 람다사용정렬
- 선택정렬
- Today
- Total
기억을 위한 기록들
[3D 게임수학] 1. 선형대수(Linear Algerbra) 본문
* 이 글은 개인노트와 같아서 계속해서 수정되고 있습니다. *
이전부터 해야지해야지라는 생각에 시작을 제대로 못하고 있었다.
사실 당장 급하게 필요한 기술이 아니라서 안하고 있었던것 같다. 그런데 장기적으로 봤을때 필수적으로 필요한 내용이다. 그래서 매일매일 쓰면 부담스러우니 매주 일요일마다 10개의 챕터를 주당 한개씩 써보려고한다. 이번은 첫 시작은 선형 대수이다.
1.1 선형 변환(Linear Transformation)
대수(Algerbra)란?
- '대신하는 수' 즉, 미지수와 그 미지수를 사용하는 수학인 대수학을 뜻한다. (ex. x,y,z 같은)
선형(Linear)이란?
- 선형성(linearity) 또는 선형(linear) 직선처럼 똑바른 도형 또는, 그와 비슷한 성질을 갖는 대상이 이라는 뜻으로 이러한 성질을 갖고 있는 변환 등에 대하여 쓰는 용어.
- 함수의 경우 '직선'이라는 의미로 사용된다. 이런 개념들은 수학, 물리학 등에서 많이 사용(다른 말로도 1차)
수학에서의 선형성에 대한 정의
함수 f에 대해
- 임의의 수 x,y에 대해 f(x+y)=f(x)+f(y)가 항상 성립하고,
- 임의의 수 x와 a에 대해 f(a*x) = a*f(x)가 항상 성립할 때
함수 f는 선형이라고 한다. 선형은 선형 함수(혹은 선형 변환)에 대한 정의이다.
선형 함수가 되지 않는 조건들
1. 함수가 반드시 1차여야 함.
2차 이상의 차수를 가진 수식에서 첫 번째나 두 번째 조건이 절대 만족할 수가 없기 때문 예를 들어 , f(x)= x^2 이면
- f(a*x) = (a*x)^2 = a^2*x^2
- a*f(x) = a*x^2
따라서 f(a*x)와 a*f(x)는 같지 않다. 이와 같이 2차 이상의 함수들은 두 번째 조건(수학에서의 선형성에 대한 정의)이 만족하지 않음을 알수있다.
2. 선형 함수의 입력이 0이면 반드시 출력도 0이어야 함.
첫 번째 조건에서 x를 0으로 놓고 보면 알 수 있다.
f(0+y) = f(0) + f(y)
f(y) = f(0) + f(y)
0 = f(0)
대표적인 선형 함수의 예
대표적인 예로 2차원 공간상의 원점을 지난 모든 직선 방적식을 들 수 있다.
f(x) = m*x일 때의 조건 확인(수학에서의 선형성에 대한 정의)
1번 조건
f(a + b) = m(a+b)
= m*a + b*a
=f(a) + f(b)
2번 조건
k*f(a) = k X m*a
= m X k*a
= f(k*a)
이와 같이 원점을 지나는 2차원 공간상의 모든 직선들은 훌륭한 선형 함수들이다.
1.2 벡터Vector)와 벡터 공간(Vector Space)
선형대수학의 설명문을 보면,
행렬이 나오는 이유는 모든 선형 변환이 행렬로 표현이 가능하기 때문.
연립 선형 방정식 또한 행렬을 사용해 풀어 답을 찾을 수 있다.
선형 변환은 1.1에서 간략히 설명하였다. 남은 것은 선형 대수의 주 연구 대상인 벡터와 벡터 공간이다.
공간(space)이란?
함수(변환)들에 적용되는 값들의 집합(set)이라고 생각하면 쉽다.(어떤 값이나 객체들의 집합이라고 할 수 있다.)
벡터 공간(Vector Space)이란?
이런 공간들 중에 특정 성질들을 만족하는 공간을 말하며 그 공간을 이루는 원스들을 벡터(vector)라고 정의하는 것.
수학에서는 유클리드 벡터라고 일컬어지는데, 다른 말로 기하(geometric) 혹은 공간(spatial) 벡터라고도 한다.
유클리드 벡터는 2차원이나 3차원의 기하학적인 공간에서 길이와 방향을 가진 선분으로 표시되어 이해가 쉽다.
하지만, 벡터는 사실 이보다 더 복잡한 개념으로 벡터 공간을 구성하는 객체로서 정의된다.
벡터 공간을 정의
체 F(실수체, 복소수체 등)가 필요하며, F의 원소들을 스칼라라고 부른다. 이때 집합 V에 대해 두 연 산
- v, w ∈ V 일 때, V+V -> V인 연산, 벡터 덧셈 (v+w)과
- v ∈ V, a ∈ F 일때 F X V -> V인 연산 스칼라 곱(a*v)이 정의되고 아래의 성질들을 만족하며 집합 V를 체 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. V의 임의의 원소 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
여기서 가장 중요한 공리가 있는데 바로 1번과 6번이다.
벡터 공간의 핵심
어떤 공간에 속한 임의의 원소들에게 위에서 정의한 두 연산(원소들의 합, 원소와 실수 or복소수 등과의 곱)을 적용하면 그 출력 결과가 다시 그 공간의 원소가 되어야 한다는 것.
이 조건을 만족하면 해당 공간은 벡터 공간이 되고, 그 원소들은 벡터라고 불리게 된다.
벡터 공간과 선형 함수들의 관계
그것은 바로 선형 함수에게 어떤 공간을 입력으로 넣었을 때 나오는 출력 값들이 벡터 공간을 이룬다는 점.
즉, 선형 함수들의 치역이 항상 벡터 공간이다. 선형 함수의 정의와 벡터 공간의 정의를 같이 보자.
1. 더하기
선형 함수 : x, y에 대해 f(x+y)=f(x)+f(y)가 항상 성립
벡터 공간 : v+w가 다시 V에 속한다.
f로 출력되는 두 개의 값을 더하면 (f(x) + f(y)) 다시 f의 출력 값 (f(x+y)이 된다는 말.
벡터 공간의 첫 번째 연산이 원소 간의 덧셈(벡터 덧셈) 조건을 만족
2. 스칼라 곱
선형 함수 : x와 a에 대해 f(a*x) = a*f(x)가 항상 성립할 때
벡터 공간 : a*v가 V의 원소이다.
f로 출력되는 값에 스칼라 곱 (a*f(x))을 하면, 다시 f의 출력 값 (f(a*x))이 되어야 하는데 이것이 바로 벡터 공간의 두 번째 연산이 원소와의 스칼라 곱 조건을 만족.
따라서 선형 함수의 출력 값들이 모두 모인 치역이 바로 벡터 공간임을 알 수 있다.
- 하나의 벡터를 선형 변환을 통해서 다른 벡터로 변환 가능
- 모든 선형 함수들은 행렬로 표현 가능하므로 벡터들 사이의 모든 변환은 행렬로 표현할 수 있음을 알 수 있다.
3가지의 정리
1. 선형 변환과 벡터 공간이라는 것이 있다.
2. 선형 변환은 행렬로 표현 가능하다.
3. 선형 변환을 통해 하나의 벡터를 다른 벡터로 변환시킬 수 있다.
참고서적 : 수학으로 시작하는 3D 게임 개발 - 양영욱
'그래픽스(Graphics) > Game Math' 카테고리의 다른 글
[3D 게임수학] 3. 행렬(Matrix) (0) | 2021.02.25 |
---|---|
[3D 게임수학] 2. 벡터(Vector) (0) | 2021.02.15 |
UE4 쿼터니온 활용 참고 (0) | 2020.05.18 |
Quaternion (쿼터니온/사원수) (0) | 2020.05.13 |
[UE4]액터간의 방향을 구해보자 (1) (0) | 2019.11.10 |