본문 바로가기
개발/OpenGL

OpenGL을 위한 선형대수 (3Blue1Brown 요약)

by amkorousagi 2021. 3. 4.

Vector

선형대수
벡터(3Blue1Brown part1 thumnale)

vector를 보는 세 가지 관점이 있다.

  1. 컴퓨터에서, vector는 단지 숫자의 list이다. 모든 vector는 origin(원점)에서 시작한다. vector의 도착점(tip)을 숫자의 list로 표현한다.
  2. 물리에서, vector는 공간에 있는 arrow(화살표)이다. (방향과 크기를 가진)
  3. 수학에서, vector는 vector 연산(vector 합과, scalar 곱=scaling)이 가능한 모든 것이다.
vector는 근본적으로 movement(움직임)이다.

따라서, vector의 합은 원점에서 두 vector의 움직임을 행하는 것이다.

 

 

 

 

 

 

 

Span

선형대수
스팬 (3Blue1Brown part2 thumnale)

모든 vector는 basis vector(기저 벡터)의 linear combination(선형 조합)으로 표현할 수 있다.

basis vector(기저 벡터)란 vector space를 spanning(구성 또는 확장, 채움) 하는 vector이다.

즉, 해당 space의 모든 vector는 basis vector의 linear combination으로 표현할 수 있다는 의미이다.

그리고 basis vector가 spanning 한 vector space를 "span"(확장 공간 또는 구성 공간)이라고 한다.

 

vector V와 vector W의 span은 그들의 linearcombination의 집합이다.

 

그중 특별한 basis vector 가 있다. coordinate system(좌표계)의 basis vector를 unit vector라고 한다.

  • i hat = (1,0)
  • j hat = (0,1)

 

대부분의 두 vector는 2차원 공간을 spanning 할 수 있다.

그러나 몇몇 경우에는 그렇지 않다. 다음의 경우다.

  1. 두 vector의 direction이 같은 경우 -> 해당 direction의 선(1차원 공간)을 spannig 함
  2. 두 vector 중 하나가 zero vector(0,0)인 경우 -> 남은 하나 vector의 direction의 선(1차원 공간)을 spanning 함
  3. 두 vector 모두 zero vector인 경우 -> 그들의 span == origin(원점)

여기서 이러한 2차원 공간을 spanning하지 못하는 두 vector의 관계를 나타낼 용어를 알아보자.

"linearly dependent"(선형 종속적)의 의미를,

vector가 2차원 공간을 spanning 하지 못하는 경우, 두 vector는 linearly dependent하다 라고 한다.

좀 다른 말로 하면, 한 vector가 다른 vector의 scalar 곱으로 표현된다면, 두 vector는 linearly dependent 하다.

 

더 깊이 생각해보면,

위의 모든 경우는 원래 있던 하나의 basis vector에 새로운 basis vector가 추가되는 것으로 볼 수 있다.

그런데 기존의 basis vector의 scalar 곱(linear combination인데 하나의 vector 밖에 없으니 vector 합을 못하므로)으로 다른 새로운 vector가 표현된다.

즉, 0이나 다른 숫자(scalar)를 곱해 scaling 하면 새로운 vector가 기존의 vector와 같아진다는 것이다. 이건 새로운 vector가 기존 vector의 span에 포함되어 있다고 말할 수 있다. 

 

일반화하면,

새로운 basis vector가 추가되었을 때, 기존의 span이 확장(spanning)되지 않는다면, 그 새로운 basis vector는 기존의 basis vector 들에 linearly dependent 하다.

즉, 그 새로운 basis vector는 기존 span 안에 포함되어 있다. == 새로운 basis vector는 기존 basis vector들의 linear combination으로 표현할 수 있다.

 

반대로 생각하면,

linear independent 한 basis vector는 해당 vector 모든 공간을 spanning 한다.

 

Matrix as linear transformation

선형대수
선형 변환 (3Blue1Brown part3 thumnale)

 

linear transformation으로서의 Matrix

linear transformation은 변환 후에도 기존 Grid lines(격자선)이 평행하고, 간격이 같다

 

모든 vector는 unit vector의 linear combination이다.

따라서, transformed unit vector를 알 수 있다면, 어떠한 transformed vector도 전부 알아낼 수 있다.

 

n개의 transformed unit vector들은 n*n의 matrix(행렬)로 표현된다.

matrix의 각 column(열)은 해당 unit vector의 transformed unit vector를 의미한다.

 

여기서 얻을 수 있는 통찰은,

unit basis vectors == unit matrix

linear transformation == n*n matrix

 

이다.

 

shear 하는 용어는

한 basis unit vetor가 transformed 되어도 같을 때의 linear transformation을 칭하는 말이다.

 

linealy dependent column들을 transformation function으로 사용한다면,

해당 n차원 space는 squish(수축)되어 (n-1) 차원 space가 된다.

 

 

다음은 원본 영상이다.

벡터

 

스팬

 

선형 변환

 

이 분은 이 외에도 정말 명강의가 많으니 보면 도움이 될 것이다.

'개발 > OpenGL' 카테고리의 다른 글

OpenGL 시작하기(개발환경 설정)  (4) 2021.03.03

댓글