<aside> 📌 공리적 집합론에서 두 연산에 대해 1번부터 11번까지의 공리를 모두 만족하는 수 집합은 체(Feild)의 구조를 지닌다고 표현한다. 유리수, 실수와 같이 체의 구조를 가지는 수 집합은 특별한 예외 상황 없이 덧셈과 곱셈을 안전하고 자유롭게 사용할 수 있다고 볼 수 있다. - p66

</aside>

<aside> 📌 두 개 이상의 실수를 곱집합으로 묶어 형성된 집합을 공리적 집합론의 관점에서 규정한 것을 벡터 공간이라고 하며, 벡터 공간의 원소를 벡터라고 한다. - p84

</aside>

<aside> 📌 선형 연산을 사용해 $n$개의 스칼라 $a_1, ..., a_n$과 $n$개의 벡터 $\vec{v_1},...,\vec{v_n}$을 결합해 새로운 벡터 $\vec{v'}$을 생성하는 수식을 선형 결합(Linear combination)이라고 한다. 선형 결합의 수식은 다음과 같다. - p106

$$ a_1\vec{v_1}+a_2\vec{v_2}+a_3\vec{v_3}+\cdots+a_n\vec{v_n}=\vec{v'} $$

</aside>

<aside> 📌

벡터 공간 내 모든 벡터를 생성할 수 있는 선형 독립 관계를 가지는 벡터의 집합을 기저(Basis)라고 한다. - p111

</aside>

<aside> 📌 벡터 $\vec{v}$는 표준기저벡터를 사용해 다음의 선형 결합식으로 표현할 수 있다. - p135

$$ \vec{v}=(a_1,\ ...,\ a_n)\\ \vec{v}=a_1\cdot{e_1}+\dotsi+a_n\cdot{e_n} $$

</aside>

<aside> 📌 마지막 차원의 값이 1이라는 특정 조건을 가지는 전단 변환을 활용하면 이동 기능을 행렬로 구현할 수 있다. 이를 이동 변환행렬(Translate transformation matrix)이라고 하며 다음과 같이 설계할 수 있다. -p201

$$ T=\begin{bmatrix} 1&0&a\\ 0&1&b\\ 0&0&1 \end{bmatrix} $$

</aside>

<aside> 📌 아핀 공간의 벡터를 이동 벡터 또는 변위 벡터(Displacement vector)라고 부른다. 벡터 공간의 원소로 정의한 벡터와는 같은 단어지만 다른 용도로 사용된다. 마지막 차원 값은 항상 $0$이어야 한다

</aside>

<aside> 📌 직선의 방정식

$$ L(a)=a\cdot P_1+(1-a)\cdot P_2 $$

(a) $-\infty<a<\infty$ 일 때, 직선(Line)

(b) $0\le a<\infty$ 일 때, 반직선(Ray)

(c) $0\le a\le 1$ 일 때, 선분(Line segment)

</aside>

<aside> 📌 스크린 좌표계를 사용해 화면에 무언가를 표현하기 위해서는 반드시 색상이 함께 지정되어야 한다. 이렇게 스크린 좌표와 색상에 대응하는 화면의 구성 요소를 픽셀(Pixel)이라고 한다. 따라서 벡터를 화면의 점으로 최종 표현하기 위해서는 실수로 표현된 벡터 좌표를 정수로 변환한 후 색상을 부여하는 과정을 거쳐야 한다. 이러한 변환 과정을 픽셀화(Rasterization)라고 한다.

</aside>

<aside> 📌 GPU에서 수행되는 렌더링 파이프 라인 -p316

image.png

</aside>

<aside> 📌 언리얼 엔진의 오일러 각은 다음과 같은 순서를 가진다. -p343

z → x → y

회전 행렬 R은 다음과 같이 생성된다

$$ R=R_{yaw}\cdot R_{pitch}\cdot R_{roll} $$

근데 언리얼에서 연산의 순서가 왼쪽에서 오른쪽(→)인지 확인해야 한다. 오른쪽에서 왼쪽(←)일 수도 있음

yaw, pitch, roll 각의 값을 각각 $\alpha,\ \beta,\ \gamma$라고 한다면 행렬 곱은 다음과 같이 계산된다.

$$ R_\alpha\cdot R_\beta\cdot R_\gamma =\begin{bmatrix} \cos{\alpha}&0&\sin{\alpha}\\ 0&1&0\\ -\sin{\alpha}&0&\cos{\alpha} \end{bmatrix} \begin{bmatrix} 1&0&0\\ 0&\cos{\beta}&-\sin{\beta}\\ 0&\sin{\beta}&\cos{\beta} \end{bmatrix} \begin{bmatrix} \cos{\gamma}&-\sin{\gamma}&0\\ \sin{\gamma}&\cos{\gamma}&0\\ 0&0&1 \end{bmatrix} $$

오일러 각으로부터 세 개의 로컬 축을 계산해 주어진 벡터 값을 변경하는 코드는 다음과 같다.

FORCEINLINE void GetLocalAxes(Vector3& OutRight, Vector3& OutUp, Vector3& OutForward)
{
    float cy = 0.f, sy = 0.f, cp = 0.f, sp = 0.f, cr = 0.f, sr = 0.f;
    Math::GetSinCos(sy, cy, Yaw);
    Math::GetSinCos(sp, cp, Pitch);
    Math::GetSinCos(sr, cr, Roll);

    OutRight = Vector3(cy * cr + sy * sp * sr, cp * sr, -sy * cr + cy * sp * sr);
    OutUp = Vector3(-cy * sr + sy * sp * cr, cp * cr, sy * sr + cy * sp * cr);
    OutForward = Vector3(sy * cp, -sp, cy * cp);
}

</aside>

<aside> 📌

</aside>

<aside> 📌 함수는 다음 두 규칙이 성립돼야 한다.

  1. 첫 번째 집합의 모든 원소에 대한 대응 관계가 존재해야 함. - 정의역의 모든 원소는 대응되는 공역의 원소가 있다.
  2. 첫 번째 집합의 원소는 두 번째 집합의 한 원소에만 대응되어야 함. - 정의역의 각 원소는 단 하나의 공역의 원소와만 대응된다. - p69 </aside>

<aside> 📌 다음 식과 같이 모든 $a$가 $0$이 아님에도 영벡터를 만들 수 있다면, 선형 결합에 사용된 벡터는 서로 ‘선형 종속의 관계’를 가진다라고 표현한다. 따라서 $(1,\ 1)$과 $(2,\ 2)$의 두 벡터는 선형 종속인 관계를 갖는다. -p106

$$ 2\cdot(1,\ 1)+(-1)\cdot(2,\ 2)=(0,\ 0) $$

</aside>

<aside> 📌 반면 영벡터가 나오기 위해서 모든 $a$값이 $0$이어야 한다면 선형 결합에 사용된 벡터들은 서로 ‘선형 독립의 관계’를 가진다라고 표현한다. -p106

</aside>

<aside> 📌 함수 $f$에 대해,

함수 $f$는 선형이라고 한다. -p155

</aside>

<aside> 📌 표준기저벡터의 선형 결합으로 형성된 벡터 공간은 선형성을 지닌다. 이 벡터 공간을 선형 함수로 변화시킨 새로운 공간도 기저벡터의 선형 결합으로 형성되므로 선형성을 지닌다. 이렇게 두 공간이 동일한 구조를 지닐 때 두 공간의 대응 관계를 변환(Transformation)이라고도 부른다. 따라서 선형성을 유지시켜주는 선형 함수 $f(x,\ y)=(ax+by,\ cx+dy)$는 선형 변환(Linear Transformation)이라고 한다. -p160

</aside>

<aside> 📌 벡터 공간에서 이동을 위해 마지막 차원 값을 1로 한정한 부분 공간을 아핀 공간(Affine space)이라고 부른다. -p201

</aside>

<aside> 📌 다음 수식과 같이 모든 스칼라 $a,\ b,\ c$의 합이 1이면 점의 생성이 가능하다

$$ a\cdot P_1+b\cdot P_2+c\cdot P_3=P_4\tag{s.t.\ \ a\ +\ b\ +\ c\ =\ 1} $$

여러 개의 점을 결합해 새로운 점을 생성하는 수식을 아핀 결합(Affine combination)이라고 한다. $n$개의 점을 아핀 결합하는 경우에는 각 점을 $P_i$로, 점에 사용하는 스칼라를 $c_i$로 지정한 후 다음과 같이 간략히 표현할 수 있다.

$$ \sum_{i=1}^n c_i\cdot P_i \\(s.t. \sum_{i=1}^n c_i\ =\ 1) $$

</aside>

<aside> 📌 크기가 1인 두 벡터의 내적은 $\cos\theta$이다. $\theta$는 두 벡터의 사이각이다.

</aside>

<aside> 📌 아핀 결합에서 모든 스칼라 값을 $[0,\ 1]$ 범위로 한정한 결합을 컨벡스 결합(Convex Combination)이라고 부른다. 컨벡스 결합은 아핀 결합식에 각 스칼라의 범위를 $[0,\ 1]$로 제한하는 조건을 추가해 다음과 같이 표현할 수 있다.

$$ \sum_{i=0}^nc_i\cdot{P_i}\\ (s.t.\ \ \sum_{i=0}^n c_i=1,\ 0\le c_i\le1) $$

</aside>

<aside> 📌

</aside>

<aside> 📌

</aside>

<aside> 📌

</aside>

<aside> 📌

</aside>