🎁 minirt 뽀개기!

(0) minirt 시작하기!

(1) mlx 활용과 color 표현 하는 방법!

(3) 벡터의 연산!

(4) Raytracing One Weekend 식 이해하기! 1

(5) Raytracing One Weekend 식 이해하기! 2

(6) Raytracing One Weekend 식 이해하기! 3

(7) Raytracing One Weekend 식 이해하기! 4

(8) Raytracing One Weekend 식 이해하기! 5

벡터 이해하기


Raytracing one weekend 문서를 보다보면 반복문을 활용해 ppm이미지를 만들고 vector클래스를 만들더니 갑자기 벡터를 활용한 코드를 만든다. 심지어 문서에 나오는 코드는 C++로 작성되어있다! 우리는 이것을 C로 바꾸어야 한다.

벡터에 대한 개념이 없으면 이전에 나왔던 클래스들도 이해하기 어렵고 해당 멤버함수들을 대체 왜 만들어야 하는지 어렵지만 차근차근 하나씩 배워가면 이후 연산들도 어렵지 않다!

벡터란?

minirt과제를 진행하려면 벡터에 대해 이해하고 넘어가는 것이 필수이다. 우선 코드를 잡기 전에, 벡터에 대해 알아보자!

<aside> 💡 벡터란? 크기와 방향을 함께 가지는 성분

</aside>

선형대수에서 벡터에 대해 이야기 할때, 원점에 꼬리를 둔 화살표를 하나 생각하는 것이 좋다. 아래의 그림을 살펴보자.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/2f961183-0ab0-4e07-8602-410c12c457bf/Untitled.png

1차원 좌표계인 위의 그림을 보면 t = 0 인 좌표에서 t = 1인 좌표를 가리키는 크기가 1인 벡터가 있다. 우리는 여기서 벡터를 시작지점 + 크기 * 방향로 표현할 수 있다.

즉 이 그림의 벡터 = A + 1 * b 인 것이다. 이 식을 일반화 하게 되면 아래와 같다.

$$ P(t) = A + tb $$

벡터의 표현

하지만 우리가 사용할 좌표계에서는 크기와 방향(즉, t와 b)를 바로 알기 어렵다. 우리는 좌표계를 활용해 벡터의 성분을 분해한 표기법을 사용할 것이다. 예를들면 아래의 벡터 A는 A(x, y) 로 표기할 수 있다.