Исторические причины левосторонней системы координат - PullRequest
7 голосов
/ 14 июля 2011

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

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

Ответы [ 5 ]

8 голосов
/ 14 июля 2011

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

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

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

7 голосов
/ 14 июля 2011

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

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

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

4 голосов
/ 14 июля 2011

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

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

3 голосов
/ 14 июля 2011

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

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

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

3 голосов
/ 14 июля 2011

Это произвольно;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);
}
...