Почему графические координаты измеряются слева вверху?

Я заметил, что каждая компьютерная графическая система, которую я когда-либо использовал, использует левую систему координат с ее началом в верхнем левом углу. Cairo, Java, Microsoft XYZ и большинство графических программ используют эту систему. Я предполагаю, что все они восходят к общему предку, но я не могу найти никаких ссылок об этом.

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

был ли кто-нибудь рядом, чтобы рассказать историю, или может указать мне в направлении правильного учебника истории?

3 ответов


Это старая конвенция, и причины могут быть немного апокрифическими. Вот некоторые гипотезы, которые я нашел:

Он получен из поведения развертки электронного пучка ЭЛТ.

сканирование сверху вниз означает, что вам не нужно ждать отправки всего кадра, вы просто начинаете сканирование, как только начинаете получать данные. (Что снова поднимает вопрос, зачем сканировать сверху вниз)

Он позволяет правой системе координат с осью Z скорее войти в экран, чем выйти из него.

раздражающе, какао и кварц используют нижнее левое происхождение.


понятия не имею. Я не думаю, что есть однозначный ответ. Вероятно, когда у людей все еще были консольные машины, имело смысл перейти от верхнего левого угла вниз к нижнему правому. Так много людей в мире читают, как вы сказали. Имеет смысл поместить туда источник.

http://en.wikipedia.org/wiki/Memory-mapped_I/O

в статье Википедии есть некоторая информация о отображаемых дисплеях памяти. Скажем, например, мы посвящаем часть нашей памяти для выключения и включения пикселей на экране. И мы позволяем адресу 0 быть верхней левой частью экрана и перемещаться кусками, включая и выключая пиксели в зависимости от того, находятся ли они в памяти. Именно об этом говорится в первой статье.

Я не знаю, позволяют ли они адрес 0 быть верхней левой стороной дисплея, но это имеет смысл, и это может быть просто перенесено.


Я сомневаюсь, что это старая конвенция, которая сохраняется из-за унаследованных причин. У UpperLeft есть преимущество, то есть нет системы написания языка, которая идет снизу вверх. Так в UpperLeft проще:

  • разместить многострочный текст
  • работа со страницами неизвестной или бесконечной высоты
  • Если высота страницы изменена (т. е. больше или меньше устройства), в BottomLeft вы должны перевести каждую координату объекта, а в UpperLeft вы нет.

последний распространяется также на динамическое размещение и макеты, где координаты графического объекта смещены к их родителю