왜 컴퓨터 소프트웨어에서는 Y축이 반전일까?
Categories:tech
왜 컴퓨터 소프트웨어에서는 Y축이 반전일까?
발생
물리 엔진 충돌에 대한 글을 쓰다 찾아본 자료들을 보다보니 좌표평면의 값이 내가 아는 좌표평면과 다른것에 의문이 생겨 알아본 사실이다.
의문
보통 우리는 좌표평면계를 배울때 아래와 같은 형태로 배운다.

출처 : 소방방재신문
중점을 기준으로 $x$는 오른쪽이 양수 왼쪽이 음수, $y$는 위쪽이 양수 왼쪽이 음수
우리는 이렇게 좌표 평면계를 인식하는데 컴퓨터 소프트웨어들을 보면 $y$축의 값이 반전 되어있다. 아래쪽으로 갈수록 값이 커지고 위로 갈수록 내려가는 형태인것이다.
특히 2D 그래픽스를 다루는 소프트웨어들이 그러하다.

출처 : 비전시스템
왜 컴퓨터 소프트웨어에서는 굳이 반대로 좌표계를 만들었는지 이해가 안됐고 내 의문점의 시발점이다.
이유
찾아보니 정확히 누가 이렇게 정했고 만들었는지에 대한 명확한 문서는 없지만 이유에 대해서는 다들 동일하게 말하는 것이 있다.
이유는 과거 CRT 모니터의 화면 스캔 방식 때문이라고 한다.

출처 : PHILIPS
CRT 모니터들은 화면속 픽셀들의 스캔방식을 좌측 상단에서 시작하여 우측으로 한줄씩 처리하는 방식을 사용하였다고 한다.

출처 : 비전 시스템 + 위키피디아 - Analog Television
위와 같은 방식으로 화면을 처리하기도 하고 프로그래밍을 해보면 알지만 우리가 알고있는 좌표 평면계와 같이 데이터들을 저장하려면 배열의 최소 최대 값을 지정하여 사용해야 하고 이를 동적으로 관리하기에 불편하기에 음수를 표현 할 필요가 없다면 2차원 배열을 만들때 거의 대부분은 아래와 같이 만들게 된다. 이는 과거에도 동일했을 것이었다.
arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
x 0 1 2
y +----------
0 | 1 2 3
1 | 4 5 6
2 | 7 8 9
3 | 10 11 12
이와 같이 하드웨어적인 상황과 사용의 용이함에 있어 특히 음수를 굳이 표현할 이유가 없는 2D 그래픽스 소프트웨어들에 우리가 알고있는 좌표계와는 개념이 다른 좌표계가 적용되게 된것이라는 설명이 지배적이다.
결론
단순히 생각해봐도 $y$축의 아래로 갈수로 값이 올라가는 좌표계가 왼쪽에서 오른쪽으로 한줄씩 아래로 글을 읽고 써내려가는 영미권 국가에서 훨씬 이해가 쉽고 또한 편하기까지 하니 자연적으로 저렇게 표현할 수 밖에 없었을거 같다.
단순하지만 신기한 사실이었다.
Day-46