1학기 결산-게임엔진프로그래밍활용

이미지
1. 브레젠험 직선 알고리즘 컴퓨터에서 계산이 느린 실수 연산을 사용하지 않고 직선을 그리기 위해 만들이진 알고리즘입니다. 평면을 아래와 같이 8분 면으로 나누어 직선을 그립니다. 링크:  https://sulinep.blogspot.com/2020/05/bresenhams-line-algorithm.html 2. 엔진 기초 수학 여기서는 본격적으로 구현에 들어가기 전 기초 수학 지식을 쌓았습니다.  수학에서의 체는 대수적 구조의 하나로 덧셈, 뺄셈, 곱셈, 나눗셈의 사칙연산을 집합 안에서 소화할 수 있는 집합을 의미합니다. 체를 이루기 위한 조건과 체라는 개념을 알아보았습니다. 처음에 체 라는 개념이 뭔가 머릿속에서 애매했는데 이후 갈로이스 체에 대해 배운 후 조금 더 명확해졌습니다. 스칼라 는 벡터를 정의하기 위한 필수 요소이고 크기만 있고 방향이 없는 성분이다. 벡터는 크기와 방향을 포함하는 표현 도구이다. 겨기서 벡터의 기본 연산자들을 알아보았습니다. 선형성 은 직선처럼 똑바른 도형 또는 그와 비슷한 성질을 가진 대상이라는 뜻으로 함수의 경우 함수가 진행하는 모양이 직선이라는 의미로 사용된다. 선형성을 만족하려면 두 가지 조건을 만족해야 하는데 균질성과 첨가성이다. homogeneity (균질성):   additivity (첨가성): 선형이라고 부르는 수식들은 중첩의 원리 가 적용된다는 특징이 있다. 이때 행렬과 선형 변환의 관계에 대하여도 알아보았었는데 선형 변환과 행렬은 1:1 대응된다. 기저 란 어떤 벡터 공간을 선형 생성하는 선형 독립인 벡터들이다. 각각의 원소들이 다시 벡터 공간을 생성할 수 있어야하고 일차 독립이어야 한다. 표준 기저 는 많은 기저들 중 성분 1개만이 1이고 나머지 성분이 모두 0인 표준 적인 벡터이다. 여기서 벡터 공간 R의 기저를 구성하는 원소의 개수가 해당 공간의 차원 이다. 행렬 은 열기반 행렬과 행기반 행렬 중 어떤 걸 사용하느냐에 따라 계산 방식이 달라진다. 여기서는 벡터의 크기, 회전, ...

[수학] 갈로이스 체와 아핀 조합

이번 글은 과제로 나온 갈로이스 체와 아핀 조합에 대한 글입니다.

1. 갈로이스 체 (Galois Field(GF2))

갈로이스 체는 0과 1로 구성된 가장 작은 유한체입니다.

앞서 체를 이루기 위해서는 사칙연산, 교환법칙... 등 여러가지 조건이 있었습니다.
갈로이스 체로 이들을 알아보려합니다.

1) 덧셈 연산
갈로이스 체의 덧셈 연산은 아래와 같습니다.
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0
여기서 특이한 경우가 하나 있습니다. 1 + 1 = 0입니다(???)
보통 우리가 알고 있는 수학 계산을 한다면 분명 2가 나와야 합니다.

하지만 갈로이스 체는 0과 1로 이루어져 있고 이 두 개의 수로만 체의 조건이 만족되어야 합니다. 즉 2라는 수는 갈로이스 체에서 성립될 수 없습니다. 
근데 왜 1이 아니고 0일까?

그래서 GF(3) 도 한번 살펴 보았습니다. GF(3)는 0,1,2로 이루어져 있는데
GF(3)에서 1+2=0, 2+2=1 이라는 결과가 나와 있었습니다.

확인해 보면 체 안에서 순환을 돈다는 것을 알 수 있었습니다.


덧셈에 대한 항등원 = 0
덧셈에 대한 역원 = 자신
덧셈의 결과를 보면 XOR 연산과 동일한 것을 볼수있다.

2) 곱셈 연산
곱샘 연산은 아래와 같습니다. 
0 * 0 = 0
0 * 1 = 0
1 * 0 = 0
1 * 1 = 1
곱샘은 기존에 사용하던 계산 방식과 별 차이가 없습니다.

곱셈에 대한 항등원 = 1
곱셈에 대한 역원 = 0일때는 제외. 1이거나 혹은 자신
덧셈의 결과를 보면 AND 연산과 동일한 것을 볼수있다.

3) 결합, 교환 분배 법칙
결합 법칙: (0+1)+1 = 0+(1+1)   (0*1)*1 = 0*(1*1)
교환 법칙: 0+1 = 1+0  0*1 = 1*0
분배 법칙: 1*(1+0) = (1*1)+(1*0)
세가지 경우 모두 만족한다.

4) 갈로이스 체로 만드는 벡터
갈로이스 체의 값들로 벡터를 만든다면 다음과 같이 나올 것입니다.
이 벡터들로 연산 또한 가능하다.
예를 들어 덧셈은  의 결과가 나올것이다.
곱셈은  이 될것이다.

행렬 연산도 가능하다.


2. 아핀과 컨벡스 (Affine, Convex)

1) 아핀조합
아핀 조합(Affine combination)은 
아핀 공간에 속한 점  들이 주어졌을때

 에서 상수 a의 값이 항상 1이어야만 한다.

이러한 결과가 만족되었을때, 두 점을 지나는 직선상의 모든 점들은 아핀 조합으로 표현할 수 있다.


위와 같이 아핀 조합에 대해 닫혀있는 집합을 Affine Set이라고 한다.
아핀 조합을 이용해 해당 집합의 여러 점을 구할 수 있을 것입니다.
 
2) 컨벡스 조합
일단 컨벡스를 직역하면 볼록이다.
컨벡스란 어떤 2개의 지점을 선으로 연결했을 때, 그 선을 이루는 요소들이 그 집합 안에 속해 있다면 그 집합을 Convex set(볼록 집합)이라고 한다.

컨벡스 조합은 위의 아핀 조합에서 모든 계수들이 0 이상이라는 조건이 추가로 붙는다.
 의 조건과  이 만족해야한다.

3) 아핀 조합과 컨벡스 조합의 비교
유한개의 벡터  와 실수  에 대하여 선형결합으로 나타낼 수 있다는 것은 같다.
단 컨벡스는  이라는 조건이 추가로 붙는다.

임의의 원소  가 포함되어 있는 최소한의 Affine Set 과 Convex Set 을 구성해보면 다음과 같을 것이다.













4) 상수 값의 제약에 따른 선의 형태
위의 아핀 조합과 컨벡스 조합을 보면 앞에 붙는 상수의 조건에 따라 선의 모양이 달라진다.
이걸 이용하면 아래와 같이 나타낼 수 있을 것이다.












이것을 알기 전까지 유니티의 Ray가 Razer의 Ray인줄 알았다는 사실...

5) 컨벡스 도형의 특징
컨벡스 조합에 대해서 닫혀 있는 집합을 Convex Set이라고 한다.
이 집합에서 n개의 원소   을 임의로 추출 했을때 해당 원소들의 컨벡스 조합도
해당 집합에 속하게 된다.
이를 그림으로 나타내면 다음과 같을 것이다.














하지만 concave 도형 즉 오목한 도형은 어떨까 

















원소를 임의로 추출했을 때 컨벡스 조합이 해당 집합 안에 포함하지 않는다는 것을 알 수 있다.

3. 무게 중심 좌표(Barycentric Coordinate)

사실 무게 중심 좌표는 이해가 안되는 부분이 많았습니다.
수식이나 중심을 구하는 방법이나 이런건 보면 알겠지만 
머리속으로 딱 이게 뭐다라는 감이 안잡힙니다.
그래도 인터넷이나 이곳 저곳에서 찾아본 내용이라도 간단하게 작성했습니다.

Barycentric Coordinate란 무게 중심 좌표입니다.

모양이 삼각형이라고 예를 들면
삼각형의 면적의 비율로도 생각할수 있습니다.
삼각형을 무게를 가지는 하나의 물체로 봤을 때 삼각형의 총 무게가 작용하는 작용점입니다.
물리적인 의미는 삼각형이 무게중심 위에 정확히 위치하면 삼각형이 기울거나 쓰러지지 않습니다.

 


무게 중심 좌표 도식화
유니티상에서 좌표를 찍어 만든 모습


































추가. 왜 3-Simplex는 사각형이 아니고 삼각뿔일까
n차원의 Simplex는 n+1개의 꼭짓점을 가진다.
그렇기 때문에 삼각뿔의 모양이 나온다.
즉 3차원 공간의 xzy의 좌표와 원점의 좌표를 이으면 삼각뿔이다.
3-Simplex는 위의 도식화 그림을 참고해도 될것 같습니다.

댓글

이 블로그의 인기 게시물

[알고리즘] 코헨 서더랜드 알고리즘(Cohen–Sutherland algorithm)

[알고리즘] 브레젠험 직선 알고리즘 (Bresenham's line algorithm)

오일러 각, 로드리게스 회전 공식, 평면의 방정식