Исторические причины левосторонней системы координат

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

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

5 ответов

Решение

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

Ранние домашние компьютеры часто были подключены к телевизору, поэтому, естественно, они использовали эту систему координат. Я думаю, что многие мониторы работали одинаково просто потому, что производители могли частично перерабатывать электронику / логику. И поскольку тогда это была "естественная" система координат, которую использовали программисты (помните, что тогда нам приходилось обращаться к видеосистеме на гораздо более низком уровне), она просто застряла, поскольку большинство людей привыкли к ней.

Исключением из этой модели является PostScript и его преемник PDF. Они моделируют бумагу и поэтому не были привязаны к использованию системы координат экрана для эффективности. Они используют (0,0) в левом нижнем углу, как обычно делают математики. NeXT использовал видеосистему Display PostScript, которая является расширением PostScript для рисования на экране, и, таким образом, использовал систему PostScripts с (0,0) в левом нижнем углу. Сегодняшняя Mac OS X является производной от NeXT и, таким образом, также использует эту систему. На iOS инженеры Apple решили перевернуть систему на более распространенную модель с (0,0) в левом верхнем углу, чтобы облегчить переход разработчиков на другие системы.

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

Взгляните, например, на веб-страницу - она ​​простирается вправо и вниз, поэтому вы никогда не знаете точно, где будет находиться нижний левый угол (например). С другой стороны, если вы берете верхний левый угол за источник, он всегда будет в том же месте, когда вы открываете страницу, и вам никогда не придется иметь дело с отрицательными числами.

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

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

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

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

И, поскольку текст будет продолжать течь, он будет идти вниз, увеличивая номер строки.

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

Это произвольно; GL, например, ставит (0, 0) внизу слева. В Java соответствующее преобразование

protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    Graphics2D g2d = (Graphics2D) g;
    ....
    AffineTransform at = g2d.getTransform();
    g2d.scale(1, -1);
    ...
    g2d.setTransform(at);
}
Другие вопросы по тегам