현재 Metal API를 공부하며 그래픽 프로그래밍을 배우고 있다. 그래픽에 입문하게 되면 가장 먼저 해볼 예제는 다음과 같을텐데, 바로 삼각형을 화면에 그리는 것이다.

이후에 삼각형을 두개 이어붙여 메쉬를 만들고, 메쉬에 이미지 텍스처를 입히고, 삼각형 여러개를 이어붙여 입체적인 도형을 만들어 텍스처를 입혀보는 등의 예제들을 이어서 해나갈 것이다.
근데 나는 여기서 의문이 들었다. 왜 하필 삼각형일까? 사각형을 그릴거면 사각형 좌표를 주고 만들어도 되고, 오각형이면 오각형 좌표, 나아가 n각형의 도형에는 n개의 좌표를 넘겨주면 되지 않을까? 물론 2차원 평면상의 다각형 물체를 그릴 경우를 가정한다면 n각형에 대한 좌표를 직접 넘겨주는 방법이 효율적이고 쉬울수도 있다. 하지만 그 물체가 원이나 곡선이라면? 원이나 곡선은 각이 존재하지 않기 때문에 좌표를 넘겨줄수가 없다. 이런 물체를 그리기 위해선 여러개의 다각형을 최대한 작게 이어붙여 곡선처럼 보이게 만드는 것이 최선일 것이다.

좋다. 그러면 다각형을 이용해 곡선을 만드는 것까지는 이해할 수 있다. 그래도 왜 삼각형인지 아직까지는 납득이 가지 않는다. 위에 표시된 이미지처럼 사각형을 이용하는것이 깔끔하지 않은가? 오각형이 넘어가면 더 복잡해질 것이라는 것을 직감적으로 느끼지만, 좌표계 역시 사각형을 사용하면 x와 y를 정확히 구분할 수 있기에 사각형이 더 적합해 보인다.
이 부분에 대해서 내 고정관념을 깨버린 포스팅이 하나 있었다. 먼저 링크를 남기도록 하겠다.
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=jidon333&logNo=60211148316
3D 그래픽의 이해 : 기하학적 모델링(Geometric Modeling)
기하학적 모델링(Geometric Modeling) : 어떠한 문제나 사실을 기하학적으로 표현하는 방식 예컨데 분자 ...
blog.naver.com
사각형이라하면 당연히 하나의 면이 만들어지는 도형이라고 생각했다. 하지만 다음과 같은 상황이 온다면 이것은 사각형인가?

아니다. 이것은 두개의 삼각형이다. 내가 생각하는 사각형은 4개의 점을 교차하지 않도록 이은 도형이었지만, 컴퓨터에게 4개의 점을 주었을 때는 내가 생각하는 사각형을 만든다는 보장이 없었다. 위와 같은 상황이 일어날 가능성은 충분히 있는 것이다. 물론 알고리즘을 통해 사각형을 보장하는 함수를 적용할 수도 있겠지만, 사용되는 시간과 메모리를 생각하면 삼각형 두개를 이어붙이는게 훨씬 효율적일 것이다.
그렇다면 삼각형은? 위 사각형 그림과 같이 선이 교차하여 다른 도형이 만들어질 가능성이 있는가? 결론부터 말하면 3개의 점을 이어주면 무조건 삼각형이 만들어진다. 즉, 삼각형은 도형을 그리는 최소의 단위이자, 이것을 이용하면 모든 다각형을 만들 수 있다.
이 정도로 그래픽에서 삼각형을 사용하는 이유에 대해 알아보았다. 입문하며 가장 먼저 드는 의문이었는데, 한 번 알아보고 글로 정리까지 하니 마음이 편해진다.