Из того, что я видел, почти все используют координаты, где (0, 0) вверху слева, а положительная ось Y идет вниз в направлении экрана.
Почему это так? Почему обычная положительная ось Y не идет вверх, как показано на графиках в простых математических классах?
coordinates
graph
user3387566
источник
источник
Ответы:
Это вызвано историей. Ранние компьютеры имели трубки с катодными лучами (CRT), которые «рисуют» изображение с помощью катодных лучей из верхнего левого угла в нижний правый.
Чтобы облегчить интерфейс между памятью графической карты и ЭЛТ, память считывалась с самого начала, а изображение выводилось сверху слева (с наименьшим адресом памяти) в нижний правый (с наибольшим адресом памяти).
Расширение (на основе комментариев)
ЭЛТ основаны на аналоговых телевизорах, которые были доступны в то время.
Телевизоры создают изображение построчно сначала слева направо, а затем сверху вниз . Можно предположить, что причиной этого является только стиль письма в западных странах.
источник
Это отличный вопрос, о котором я думал много раз. Простой ответ на вопрос «почему» заключается в том, что телевизионные форматы также проводят свои линии слева направо, а затем сверху вниз. Оригинальные компьютерные мониторы были ЭЛТ-экранами (маленькими телевизорами), поэтому формат, естественно, остался прежним. Когда мониторы стали плоскими экранами (и телевизоры тоже стали плоскими экранами), было одинаково естественно сохранить тот же формат для легкой совместимости.
Конечно, вы можете спросить: почему телевизоры рисуют таким образом? Они были изобретены в начале 20-го века, так что вы можете себе представить, сколько мыслей или их отсутствие ушло в дизайн, если он даже подвергался сомнению. Примечание: это не значит быть неуважительным, так как невероятно сложнее получить уравнения для магнитного отклонения лучей к нужным линиям на экране, в отличие от простой матрицы из крошечных «лампочек». (Этот вопрос поднимает вопрос о том, как на Земле они изобрели ЭЛТ до появления простой матрицы точек, еще в начале 20-го века?)
Тем не менее, я предполагаю, что, вероятно, это никогда не подвергалось сомнению (плохо), так как западные языки пишут слова слева направо и сверху вниз. Наверное, никто не задумывался о возможности сделать это иначе.
Лично мне не нравится этот формат. Я приобрел такое отношение, программируя игры и другие симуляции, включающие эллиптические орбиты. Всякий раз, когда вы ищите уравнения для рисования, включающие sin, cos или tan, вы должны аккуратно инвертировать знаки, которые имеют отношение к параметрам оси y ... или вы получите не то, что нарисовано. Примером могут служить параметрические уравнения для эллипса, построенного под любым 2D-углом. Это может быть настоящим кошмаром, разоблачающим грех, грех , и тому подобное.
Говоря кратко в математических терминах, экран находится в квадранте 4 вместо квадранта 1. Это излишне сложно.
Кстати, когда вы получите 3 измерения, ось Z считается "вверх" в положительном направлении. Какая ирония. [РЕДАКТИРОВАТЬ]: Может быть, нет, см. Мой комментарий ниже.
Еще 2 вещи, которые я понял / наткнулся:
Солнечные часы в северном полушарии (с указателями на север и дисками, параллельными земле) всегда вращаются по часовой стрелке . Так что, если мы поместим нулевой час в верхнюю часть «циферблата», то теневой указатель начнет двигаться вправо. Это может быть источником лево-правого направления на западных языках, распространяющегося вниз до декартовых координат и экранов телевизоров / компьютеров.
Старые компьютеры не так много рисовали графические объекты. Они нарисовали текст в командной строке. Поэтому естественно поставить строку 0 при y = 0. Если бы у нас был источник слева внизу, математика рисования текстовых линий была бы немного более сложной, и это могло бы иметь большое значение для тех старых медленных компьютеров (которые даже сделали ярлык для увеличения на 1, ради бога, называется "++"). Кроме того, вам нужно знать разрешение экрана, в то время как если вы просто делаете строку 0 при y = 0, вам не нужно знать разрешение.
источник
Приложение: Ранняя графика была сделана на векторных мониторах , всего в одном шаге от осциллографов, наблюдаемых в лаборатории, где (0,0) будет в точной середине экрана, при условии, что какая-то ручка поворачивается для установки шкалы X / Y, X / Y смещение и, возможно, инверсия X / Y.
Например, специализированное аппаратное обеспечение Atari «Астероиды» (1979) использовало векторный экран; было бы интересно узнать, что он думает о своей программной системе координат.
Система «Sketchpad» Ивана Сазерленда (1963 г.) была основана на векторном дисплее TX-2 , а в «Sketchpad: человеко-машинная графическая система связи» (кандидатская диссертация, январь 1963 г.) он пишет на странице 70 и далее:
Диаграмма 5.2 на стр. 73 показывает, что «система координат страницы» использует математическое соглашение декартовой системы координат X / Y. (Кто-то может спросить, почему эта конвенция такая ...)
источник
Не все в верхнем левом углу.
OpenGL, например, указывает, что источник находится в нижнем левом углу, и это распространено по всему API: координаты текстуры, области просмотра, прямоугольники текселей, стандартная ортопедическая проекция: он полностью внизу слева.
Здесь есть разница в мышлении.
На экранах компьютеров, как и в книгах, когда люди читают (а я предполагаю, что здесь есть язык, похожий на английский), они читают слева направо и сверху вниз. Вы сделали это сами, когда писали этот вопрос, и вы делаете это, когда читаете ответы на него.
В математике и дизайне, когда вы строите график, у вас есть оси X и Y, где положительный X направлен влево, а положительный Y повышается.
Если вы создаете что-то вроде 2D GUI в игре, многим людям будет проще и интуитивнее выложить его в стиле «вверху слева - источник».
Если вы создаете что-то, чтобы имитировать дизайн или макет на миллиметровой бумаге, для многих людей может быть проще и интуитивно понятнее изложить это в стиле «внизу слева - источник».
На самом деле оба эти соглашения носят весьма неформальный характер, и если вы настраиваете ортопроекцию, вы на самом деле можете выбрать исходную точку в любой произвольной точке на (или выключенном) экране, с положительным знаком X, перемещающимся влево или вправо и положительным Y идет вверх или вниз. Это просто вопрос соответствующей корректировки матрицы проекции.
Поэтому важно только выбрать, какое соглашение вы собираетесь использовать, и использовать его последовательно.
источник
Потому что экраны начинают отображать изображение из левого верхнего угла. Было бы проще связать рендеринг или отрисовку оси координат, когда (0,0,0) находится в верхнем левом углу с осью + Y, идущей на экран.
источник
Аргумент ЗА: (по примеру)
Код соответствует результатам на экране :
Красная стрелка будет вверх ногами, если вы НЕ используете верхний левый источник.
Я не могу сказать, если это «почему». Просто это хорошая причина для левого верхнего происхождения.
источник