Почему система координат PyGame имеет начало в верхнем левом углу?

Я использовал PyGame некоторое время, и мне пришлось преобразовывать координаты для изменения нормальной системы координат, используемой в математике (с ее началом в нижнем левом углу), в систему координат PyGame (с ее началом в верхний левый угол). Я нашел этот пост, очень полезный для этого.

Но мне интересно, почему PyGame использует эту нечетную систему координат?

Ответ 1

Это не просто PyGame - это старое соглашение для графических дисплеев. Многие API-интерфейсы позволяют вам переопределить и выбрать собственное соглашение, но даже тогда они возвращаются к этому соглашению в верхнем левом углу в фоновом режиме.

Происхождение соглашения легко увидеть для старых дисплеев CRT. Растровое сканирование для каждого кадра прогрессировало сверху вниз, при этом каждая строка сканировалась слева направо. Поскольку сканирование было выполнено таким образом, сигнал был отправлен таким образом, и буфер пикселей в памяти был организован таким образом, чтобы позволить оборудованию реализовать относительно простое и эффективное линейное сканирование памяти для каждого кадра.

С ЖК-дисплеями и другими новейшими технологиями отображения я вполне уверен, что это согласуется с историческими причинами - наследие, по-видимому, произвольного решения в какой-то момент о том, как растровый сканер сканирует изображение для телевизионных сигналов и ЭЛТ много десятилетий назад.