본문 바로가기

엔진프로그래밍

엔진프로그래밍 수학 수업 정리

체(Field)란 무엇인가?

체는 사칙연산에 대해 닫혀있는 집합입니다.

닫혀있다는 뜻은 집합안에 숫자들로 사칙연산을 하였을 때 값이 집합안에 존재한다는 뜻입니다.

체의 특징

1. 덧셈과 곱셈에 대한 결합법칙이 성립한다.

2. 덧셈과 곱셈에 대한 교환법칙이 성립한다.

3. 덧셈과 곱셈에 대한 분배법칙이 성립한다.

4. 덧셈에 대한 항등원이 0와 곱셈에 대한 항등원인 1이 존재한다.

5. 계산했을 때 항등원이 나와야하는 역원이 존재한다.

스칼라란 무엇인가?

스칼라는 크기와 방향을 가지는 벡터와는 달리 크기만 있고 방향을 가지지 않는 양을 뜻합니다.

스칼라는 벡터를 정의하기위한 필수 요소입니다.

벡터란 무엇인가?

벡터는 크기와 방향을 가지고 있는 벡터 공간의 원소입니다.

벡터가 존재하려면 벡터 공간이 필요합니다.

벡터 공간

벡터 공간(선형 공간)은 선형대수학에서 원소를 서로 더하거나 주어진 배수를 늘이거나 줄일 수 있는 공간입니다.

벡터의 기본연산자

벡터의 덧셈

벡터의 덧셈은 각 원소의 덧셈입니다

벡터의 뺄셈

벡터의 뺄셈은 덧셈과 마찬가지로 각 원소의 뺄셈입니다.

벡터와 스칼라의 곱셈

벡터와 스칼라간의 곱셈은 각 원소의 스칼라 값을 곱해주면 됩니다.

선형성의 특징

 

이 두가지 성질을 만족하면 선형성을 가진다고 할 수 있습니다.

예를 들어

위의 식은 첫번째 성질을 만족하여 선형성을 가집니다.

위의 식은 두번째 성질을 만족하여 선형성을 가집니다.

선형 의존과 선형 독립

벡터 v1,v2가 있을 때, 만약 모든 계수가 0인 경우를 제외하고 어떠한 선형조합으로도 0을 만들 수 없다면 이 벡터들은 독립입니다. 반대로 0을 만들 수 있다면 이 벡터들은 의존입니다.

 

위 그림에서 두개의 벡터 v1, v2가 있을 때 v2는 v1의 2배이고 방향도 같습니다. 이들은 선형 의존입니다. 그 이유는 v1의 2배에서 v2를 빼면 0이 되기 때문입니다.

위 그림에서 두 벡터 v1, v2는 어떠한 선형 조합을 한다해도 0을 만들 수가 없습니다. 때문에 이 둘은 선형 독립입니다.

행렬과 선형 변환이 1:1로 대응되는 이유

결론부터 말하자면 행렬과 선형변환은 동일합니다.

위 함수를 행렬곱셈으로 표현하면

위의 식이 나옵니다.

이로 인하여 행렬과 선형 변환은 1:1대응이 가능함을 알 수 있습니다.

차원과 기저의 정의

선형대수학에서 기저란 벡터공간을 생성하는 뼈대와 같은 존재입니다.

한 벡터공간에는 무수히 많은 기저가 존재할 수 있습니다. 또한 기저는 일차독립이어야만 합니다.

벡터공간의 차원을 알고 있다면 벡터의 일차독립만 확인해도 그것이 기저인지 확인할 수 있습니다.

차원은 벡터공간이 R = (x,y)일 때 x,y가 모든 실수의 범위에 포함되기 때문에 무수히 많은 기저가 존재합니다.

이 중 (1,1), (2,1)등이 기저라고 한다면 벡터공간의 R의 차원은 2차원입니다.

결국 벡터공간 R의 원소의 개수가 해당 공간의 차원이 됩니다.

 

열기반 행렬, 행기반 행렬을 사용할때 차이점

열 기반 행렬

유니티, OpenGL에서 사용

행 기반 행렬

언리얼, DirectX에서 사용

행렬의 속성에서 교환법칙은 성립하지 않기 때문에 두개의 적용 순서가 반대입니다.

크기, 회전, 밀기 행렬, 선형 변환을 시각적으로 표현

임의의 벡터를 (a,c) (b,d) 두 벡터로 벡터 공간을 선형 변환시키면 위의 그림처럼 나타납니다.

크기

 

크기를 바꾸는 행렬은 위의 식으로 표현할 수 있습니다.

회전

반지름이 1인 원에서 호의 좌표를 구하고 싶으면 그림과 같습니다.

회전 행렬은 위의 식으로 표현할 수 있습니다.

밀기

 

 

위의 행렬을 대입했을 때 그림과 같이 나옵니다.

밀기 행렬은 x축으로 밀 때 a에 값을 대입하고 y축으로 밀 때 b에 값을 대입하면 됩니다.

행렬을 사용하면 좋은 점

게임으로 예를 들자면 게임에는 T(이동)R(회전)S(크기)가 존재합니다.

게임에서 행렬을 사용하지 않으면 매번 TRS를 한 번씩 곱하면서 게임이 진행됩니다.

만약 행렬을 사용한다면 미리 행렬 계산을 해놓은 TRS를 한 번만 곱하면 됨으로써 연산 횟수를 줄일 수 있습니다.

행렬식이 가지는 시각적 의미

행렬식이란 정사각행렬이 나타내는 선형 변환이 부피를 확대시키는 정도를 나타냅니다.

행렬식 값이 0이라면 행렬의 역행렬은 없습니다.

2x2 행렬의 행렬식은 선형변환 후의 두 기저벡터가 이루고 있는 평행사변형의 넓이가 됩니다.

직교정방행렬의 역행렬이 정치행렬이 되는 이유

직교정방행렬의 열과 행들은 직교 단위 벡터가된다.

위와 같은 조건을 만족하면 Q는 직교정방행렬이라고 할 수 있다.

Q의 전치행렬과 자기자신 Q를 곱했을 때, I(Identity 단위)행렬이 된다는 것은 Q의 전치 행렬이 Q의 역행렬과 같아지고, 이렇게 되면 직교행렬이라고 부를 수 있다.

단순한 예로는 2x2의 단위 행렬이 있다.

밀기 변환과 이동 변환과의 관계

밀기 변환은 말그대로 밀어서 본래의 모양을 변형시키는 것이고 이동변환은 위치만 바꾸는 것이기 때문에 모양은 그대로입니다. 결국 이동변환은 평행이동을 하게 됩니다.

아핀 공간의 점과 벡터

아핀 공간은 원점이 어딘지 모르는 벡터 공간이라고 할 수 있습니다.

아핀 공간에서 점에서 다른 점까지의 이동은 벡터가 담당합니다.

 

아핀공간은 점을 구분하기 위해 차원의 수 보다 하나 더 많은 원소가 존재하는데 그 값이 1이면 점 0이면 벡터입니다.

예 : (x,y,z,1)

 

점에 이동벡터를 더한 결과는 1을 벗어나면 안됩니다.

 

점 + 벡터 = 점

점 - 점 = 벡터

벡터 + 벡터 = 벡터

점 + 점 = ?

 

기본적으로 점과 점을 더하면 마지막값이 2가 되기 때문에 불가능합니다.

하지만 스칼라값을 곱하면 가능하게 할 수 있습니다.

아핀 공간에서 (x1,y1,1), (x2,y2,1)의 두 점이 있다고 할 때

스칼라 a,b를 곱하고 더해주면 a(x1,y1,1)+b(x2,y2,1)이 됩니다.

저 식으로 보면 a+b=1 이 성립하면 더한 후의 값도 점이 됨으로 덧셈을 할 수 있습니다.

 

y=x 는 선형 함수이고, y=x+1은 선형 함수가 아닌 이유

위의 두 식을 만족해야 선형성을 가질 수 있습니다.

y=x는 선형성을 만족하지만 y=x+1은 만족하지 못합니다.

'엔진프로그래밍' 카테고리의 다른 글

회전 행렬과 LookAt 행렬  (0) 2020.07.01
UV좌표와 뷰 좌표계  (0) 2020.06.24
Galois Field와 아핀 조합  (0) 2020.06.10
코헨 서덜랜드 알고리즘 구현  (0) 2020.06.03
브레젠험 알고리즘 구현  (0) 2020.05.27