🎁 minirt 뽀개기!
(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>
선형대수에서 벡터에 대해 이야기 할때, 원점에 꼬리를 둔 화살표를 하나 생각하는 것이 좋다. 아래의 그림을 살펴보자.
1차원 좌표계인 위의 그림을 보면 t = 0 인 좌표에서 t = 1인 좌표를 가리키는 크기가 1인 벡터가 있다. 우리는 여기서 벡터를 시작지점 + 크기 * 방향
로 표현할 수 있다.
즉 이 그림의 벡터 = A + 1 * b
인 것이다. 이 식을 일반화 하게 되면 아래와 같다.
$$ P(t) = A + tb $$
하지만 우리가 사용할 좌표계에서는 크기와 방향(즉, t와 b)를 바로 알기 어렵다. 우리는 좌표계를 활용해 벡터의 성분을 분해한 표기법을 사용할 것이다. 예를들면 아래의 벡터 A는 A(x, y) 로 표기할 수 있다.