Почему Java 2D origin находится в верхнем левом углу? - PullRequest
9 голосов
/ 15 марта 2011

Я не жалуюсь, просто удивляюсь.Почему Java использует верхнюю левую точку поверхности рисования как источник?Я предполагаю, что более естественным является выбор левого нижнего угла в качестве источника и увеличение оси по мере их подъема и вправо (аналогично кварцу).

Ответы [ 10 ]

11 голосов
/ 15 марта 2011

Компьютерная графика имеет начало в левом верхнем углу с незапамятных времен, включая QuickDraw.Использование в левом нижнем углу (как в математике) является вещью PostScript / PDF.Поскольку Quartz основан на PDF, он использует свои координаты, но это в основном уникальное решение среди графических библиотек.

8 голосов
/ 15 марта 2011

Это всегда так работало.

В дни сборки пиксель один всегда был в верхнем левом углу. Это был первый пиксель или символ, который мог прочитать пользователь.

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

4 голосов
/ 15 марта 2011

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

3 голосов
/ 03 января 2012

Если вы вернетесь достаточно далеко, например, в 1981, вы можете найти некоторые исключения!
http://central.kaserver5.org/Kasoft/Typeset/BBC/Ch08.html

«Представьте себе графическое окно, у которого края« a »,« b »,« c »и« d »граничат с« левыми »углами экрана (это всегда отправная точка для графики)»

1 голос
/ 15 марта 2011

вероятно пришло из телевизионного стандарта, где сканирование начинается сверху вниз.

0 голосов
/ 08 декабря 2015

Ответы типа «это всегда было так» на самом деле не отвечают на вопрос «почему», поэтому я не понимаю, почему ответы с наибольшим количеством голосов касаются повторения статус-кво с дополнительной информацией.

Эрик упоминает, что «[назад] в дни сборки, пиксель один всегда был в верхнем левом углу», но он не упоминает почему . Он продолжает объяснять, что если мы начнем с левого нижнего угла и захотим добавить новую строку в текст, то нам придется сделать это, переписав все на экране снизу вверх (если вы начали в левом нижнем углу в прошлый раз, тогда вы не оставили места для этой новой строки; материал должен быть сдвинут вверх, чтобы добавить новые строки). Пользователь Unreputable отметил, что это имеет смысл только с некоторыми языками (но я не знаю языков, которые начинаются снизу вверх, что в любом случае имеет значение), и что это не имеет особого смысла, когда речь идет об изображениях или графика; и я согласен, он прав насчет последнего.

Убието дает, пожалуй, самый полезный ответ: возможно, это связано с тем, как электронная пушка ЭЛТ-мониторов рисует изображение сверху вниз, слева направо.

Однако во всех этих ответах, возможно, пропущен один важный момент: причина, по которой люди задают такой вопрос о том, что верхний левый угол является источником осей, связана не только с точкой, находящейся в верхнем левом углу, но и потому, что, в отличие Декартова система координат, которую мы все используем, начиная с начальной школы, где ось Y увеличивается вверх, эта компьютерная графика и система координат Java увеличивают ось Y вниз! Это один из самых неприятных и запутанных аспектов этой системы. Если бы система имела начало координат в верхнем левом углу экрана, но уменьшала ось Y (и имела отрицательные числа) вниз, то электронная пушка монитора ЭЛТ действительно объяснила бы всю тайну, по крайней мере, для меня. В конце концов, мы бы тогда поняли, почему точка (0,0) находится слева вверху, а все остальное работает так, как мы ожидаем от нашего математического образования.

Однако это не относится к системе координат Java и компьютерной графики 2D; как ни удивительно, ось Y этой системы увеличивается вниз. Зачем? Я думаю, что это самая большая загадка после того, как мы рассмотрим CRT или происхождение экранных технологий. И, пытаясь ответить на этот вопрос «почему», я могу подумать только об одной возможности: ученые-компьютерщики хотели, чтобы система координат 2D-графики была проще, чтобы избежать путаницы, когда координата оси x всегда положительна с отрицательной осью y. Если мы предположим, что верхний левый источник был необходим из-за технологии экрана того времени с его электронной пушкой (избегайте разрывов экрана с этой технологией), то мы понимаем, что у компьютерных ученых была возможность:

  1. Обработка экрана как его 4-го квадранта, как и для декартовой системы координат, где каждый пиксель в этом квадранте (на экране) имеет положительную координату оси x и отрицательную координату оси y, как (5, -5); или

  2. Они могут перевернуть ось Y поперек оси X (вертикально вниз), перенеся 1-й квадрант вниз, и каждый пиксель на экране будет иметь как положительные координаты оси X, так и положительные координаты оси Y. вроде (5,5). Возможно, ученые-компьютерщики просто сочли это удобством и способом выполнения действий, сводящим к минимуму путаницу; два положительных числа, возможно, гораздо менее запутаны и их легче вычислить и визуализировать, чем положительное и отрицательное число.

В итоге, у этого вопроса есть два аспекта: загадка местоположения (0,0) в верхнем левом углу вместо нижнего левого и загадка оси y, увеличивающаяся вниз. Первая загадка, вероятно, лучше всего объясняется технологией ранних мониторов, которая работала сверху вниз, слева направо. И вторую загадку, вероятно, лучше всего объяснить стремлением к простоте и ясности, приняв систему координат с двумя положительными числами для координат x и y, а не потенциально запутанную систему, которая будет постоянно полагаться на положительную координату оси x в паре с отрицательная координата оси Y.

0 голосов
/ 23 июля 2012

Преимущество также в том, что он похож на двумерные массивы в программах, где [0] [0] относится к верхнему левому элементу.

0 голосов
/ 19 января 2012

В правой системе координат, когда X и Y расположены в верхнем левом углу, Z переходит в экран. Графический движок теперь может знать точки, которые находятся далеко от экрана ... чем больше Z, тем дальше точки ... очень полезны для рендеринга нескольких объектов, размещенных в пространстве, а некоторые объекты скрывают другие ...

0 голосов
/ 21 мая 2011

Я думаю, что будет совместимо с кадрами, минимизирующими и максимизирующими
Очевидная область фокусировки - то, где появляется первое слово на странице, написанной на английском языке, а именно, верхняя левая ведьма является наиболее естественным способом, за исключением случаев, когда речь идет о графическом представлении некоторой математики в первом квадранте, который стал вторым с осью y положительный (отраженный или повернутый на 180 ° относительно источника (я пришел к этому, пока гуглил способ решить эту проблему) на самом деле решение было принято задолго до того, как компьютер и возраст

0 голосов
/ 15 марта 2011

Просто выбор реализации. Координаты экрана в окнах и других ОС задаются одинаково, поэтому я полагаю, что они выбрали это в соответствии с выбором ОС, что, вероятно, является наследием.

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