Чому вгорі ліворуч розташовано координати комп’ютерної графіки?


37

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

Чому це так? Чому звичайна позитивна вісь Y не йде вгору, як показано на графіках у простих математичних класах?


7
Я заперечую, що починати зверху та збільшуватись, коли ви спускаєтесь вниз, має більше сенсу, ніж математична конвенція, оскільки вона більш тісно стосується способу читання та написання індоєвропейських мов.
Піжама Panda

3
Я думаю, що Y + вгору має сенс під час малювання фізичних предметів, оскільки земля - ​​це ваше походження, а більша частина вашого світу знаходиться над землею. Однак для дисплеїв я вважаю, що це пов'язано з імітацією написання індоєвропейських мов.
Піжама Panda


4
Чи нормалізовані координати пристрою OpenGL не мають висхідну вісь Y?
Рей

1
Отже, ви по суті запитуєте "Яке джерело походження?"
Кен

Відповіді:


43

Це викликано в історії. На ранніх комп’ютерах були трубки Cathode Ray (CRT), які "малювали" зображення катодним променем від верхнього лівого кута до правого нижнього.

Щоб полегшити інтерфейс між пам'яттю відеокарти та CRT, пам'ять читалася спочатку, а зображення малювалося вгорі зліва (з найнижчою адресою пам'яті) в нижньому правому куті (з найвищою адресою пам'яті).

Розширення (на основі коментарів)

CRT базуються на аналогових телевізорах, які були доступні на той час.

Телевізори створюють зображення за лінією спочатку зліва направо, а потім зверху вниз . Причиною цього можна вважати лише те, що вона базується на стилі написання у західних країнах.


7
Зрозуміло, але чому СТР малюють у верхньому лівому куті (дивляться у глядача)? Чому б не вертикально? Чому б не справа наліво? Чому б не знизу вгору?
Піжама Panda

1
Ви можете знайти зображення CRT тут . В основному це для аналогового телебачення, але CRT для комп'ютера має ту ж технологію.
Uwe Plonus

12
ЕЛТ-комп'ютери @PandaPajama роблять це, тому що саме таким є стандарти аналогового телебачення, і спочатку для домашніх комп'ютерів часто телевізори використовувались замість спеціалізованих моніторів. Чому перші телевізори передавали інформацію, розділяючи її на лінії сканування та малюючи скани ліворуч праворуч - я не впевнений, але це відповідало б тому, як ми пишемо, так що це може бути досить вагомою причиною для вибору між довільними варіантами.
Петріс

2
@Peteris: Те, як пишуть європейці,
Mooing Duck

1
У технічному відношенні, CRT витягується з рівня вгору вправо до нижньої лівої частини.
ps2goat

3

Це чудове питання, про яке я багато разів думав. Проста відповідь на питання "чому" полягає в тому, що формати телебачення також проводили лінії зліва направо, а потім зверху вниз. Оригінальними моніторами комп’ютера були ЕРТ-екрани (невеликі телевізори), тому формат, природно, залишався колишнім. Коли монітори стали плоскими екранами (а телевізори також стали плоскими екранами), однаково природно було зберегти той самий формат для легкої сумісності.

Звичайно, ви можете запитати: чому телевізори малюють саме так? Вони були винайдені на початку 20 століття, тож ви можете собі уявити, скільки думок чи недоліків у них входило в дизайн, якщо це навіть було поставлено під сумнів. Примітка: не призначено бути неповажним, оскільки неймовірно складніше отримати рівняння для відбиття променів магнітом до відповідних ліній на екрані, на відміну від простої матриці крихітних «лампочок». (Це ніби постає питання про те, як на Землі вони винайшли ЕПТ перед простою матрицею крапок, ще на початку 20 століття?)

Тим не менш, я здогадуюсь, що, ймовірно, його ніколи не ставили під сумнів (погано), оскільки західні мови пишуть слова зліва направо і зверху вниз. Напевно, ніхто не здогадувався про можливість робити це інакше.

Особисто мені цей формат не подобається. Я здобув таке ставлення, коли програмував ігри та інші симуляції за участю еліптичних орбіт. Щоразу, коли ви шукаєте складання рівнянь, що містять гріх, cos або загар, вам потрібно ретельно перевернути знаки, які відповідають параметрам осі y ... або ви отримаєте неправильну річ. Прикладом можуть бути параметричні рівняння для еліпса, намальованого під будь-яким кутом 2D. Це може бути справжній кошмар, що розсікає гріх гріх, гріх cos і подібні речі.

Ефективно кажучи математично, екран знаходиться у квадранті 4 замість квадранта 1. Це зайво ускладнюється.

До речі, коли ви досягнете 3 розмірів, вісь z вважається, що йде вгору в позитивному напрямку. Якийсь іронічний. [EDIT]: Може, ні, дивіться мій коментар нижче.

Ще дві речі, які я зрозумів / натрапив:

Сонячні годинники в північній півкулі (які мають вказівники на північ і диски, паралельні землі) завжди обертаються за годинниковою стрілкою . Тож якщо ми поставимо нульову годину вгорі "обличчя годинника", тоді тіньовий вказівник почне рухатися праворуч. Це може бути джерелом ліво-праворуч у західних мовах, поширюючись до декартових координат та екранів телевізора / комп’ютера.

Старі комп’ютери так не малювали графічних об’єктів. Вони намалювали текст у командному рядку. Тож закономірно поставити рядок 0 у у = 0. Якби ми мали походження внизу зліва, математика малювання ліній тексту була б дещо більше задіяна, і це могло б бути великою справою для тих старих повільних комп'ютерів (які навіть зробили ярлик для збільшення на 1, на користь, називається "++"). Крім того, вам потрібно знати роздільну здатність екрана, тоді як якщо ви просто робите рядок 0 у y = 0, вам не потрібно знати роздільну здатність.



1
О, я просто намагався підкреслити різкий контраст у складності між ЕПТ та матрицею світлодіодів. ЕЛТ мають дивовижно складну математику, яка бере участь у магнітному відхиленні променів світла. Точкова матриця простіше обернути голову: просто направляйте електричний струм на потрібні світлодіоди в потрібний час. У будь-якому разі, ця величезна масштабність більшої складності говорить про те, що на початку 20 століття було заселено більше або краще геніїв, оскільки їм довелося робити цю більш складну справу в набагато обмеженіші епохи.
DrZ214

LED-матриці були використані для відображення інформації, вони ніколи не стали популярними для телевізорів і комп'ютерних моніторів. Сучасні плоскі екрани - це не світлодіодні матриці, а РК-дисплей з підсвічуванням. Світлодіоди просто використовуються для підсвічування на деяких екранах, але зображення не створюється світлодіодами. РК - це проста техніка, але покращення роздільної здатності від старого дисплея годинника до сотень чи тисяч пікселів по екрану (а потім і деякі, оскільки для додання кольору потрібні три субпікселі!) Не обов’язково набагато простіше, ніж модулювання хвильового сигналу керування пучком ЕМ (що порівняно з радіомовленням)
oerkelens

Вісь Z не є іронічною - це математика. Систему координат потрібно праворуч, тому якщо + X праворуч і + Y на екрані, це робить + Z вгору. Так само, як якщо ми утримуємо + X праворуч, + Y вниз, + Z - на екрані.
tpg2114

1
@ tgp2114 Чому систему координат потрібно праворуч?
Taemyr

3

Додаток: Рання графіка була зроблена на векторних моніторах , лише за один крок від осцилоскопів, що спостерігаються в лабораторії, де (0,0) опиниться в точній середині екрана, за умови, що деяка кнопка повернеться до встановленої шкали X / Y, X / Y зміщення, можливо, інверсія X / Y.

Спеціалізована апаратура Atari "Астероїди" (1979), наприклад, використовувала векторний екран; було б цікаво дізнатися, що він думає, що це його система координат програми.

Система "Скетчпад" Івана Сазерленда (1963) базувалася на векторному дисплеї TX-2 , а в "Скетчпад: система графічної комунікації людина-машина" (кандидатська дисертація, січень 1963 р.) Він пише на сторінці 70ff:

Система координат системи відображення TX-2 має початок у центрі області дії і вимагає десяти бітів інформації про відхилення, розташованої зліва від 18-бітових комп'ютерних підслів на кожну вісь.

...

Для зручності представлення багатьох змінних компонентів та для більш ніж 18-бітної точності Sketchpad використовує внутрішню систему координат для малювання представлення, відірваного від подання, необхідного для системи відображення. Ця внутрішня система називається системою координат "сторінка". Мислячи малюнки на Sketchpad, координати сторінки вважаються фіксованими. Перетворення сторінки в область дає можливість переглядати на області будь-яку бажану частину сторінки при будь-якому ступені збільшення, як би через збільшувальне скло (...) Коефіцієнт масштабу на дисплеї керує розміром квадрата, який з'явиться в області застосування. Фактична кількість збережених - це половина довжини сторони квадрата, званої SCSZ для SCope SiZe), як показано на малюнку 5.2. Також зберігаються координати сторінок центру квадрата діапазону. Змінюючи ці числа, частина сторінки, показана на області, може бути змінена за розміром і переміщена, але не повернута.

На діаграмі 5.2 на сторінці 73 видно, що "система координат сторінки" використовує математичну умову декартової системи координат X / Y. (Можна запитати, чому така конвенція така, якою вона є ...)


але: векторні екрани використовувались лише тому, що пам’ять була надто рідкісною для відображення цілого відображуваного зображення та списків векторів + тривалість презентації + з'єднання потребують значно меншої пам’яті (як полігони проти вокселів)
Micka

2

Не все ліворуч.

Наприклад, OpenGL вказує, що початок знаходиться внизу ліворуч, і це повсюдно в усьому API: координати текстури, вікна перегляду, текстові прямокутники, стандартна орто-проекція: вона знизу вліво до кінця.

Тут є різниця в мисленні.

На комп’ютерних екранах, як і в книгах, коли люди читають (і я припускаю, що мова, як англійська тут), вони читають зліва направо і зверху вниз. Ви це робили самі, коли писали це запитання, і це робите, коли читаєте відповіді на нього.

У математиці та дизайні, коли ви будуєте графік, у вас є вісь X і Y з позитивним X, що йде вліво, і позитивним Y йде вгору.

Якщо ви створюєте щось подібне до 2D GUI в грі, багатьом людям може бути простіше та інтуїтивніше викладати це так, як "вгорі зліва - це походження".

Якщо ви будуєте щось для імітації дизайну чи макета на графічному папері, багатьом людям може бути простіше та інтуїтивніше викладати це так, як "знизу зліва - це походження".

Насправді обидва ці цілком неофіційні умови, і якщо ви налаштовуєте орто-проекцію, ви можете насправді вибрати своє походження в будь-якій довільній точці на екрані (або вимкнено), при цьому позитивний X буде ліворуч або праворуч і позитивно Y йдеш або вгору, або вниз. Це лише питання коригування вашої матриці проекцій відповідно.

Тому важливо лише вибрати, яку конвенцію ви збираєтесь використовувати та послідовно використовувати.


Чудова відповідь. Я створюю алгоритм з тоннами тригонометрії, що в кінцевому підсумку призведе до того, що на екрані будуть намальовані речі, і я був дуже невпевнений у тому, чи порушую я якусь табу чи умову, коли позитив по осі y буде зростати.
Олександр Хест

-1

Оскільки екрани починають відтворювати зображення з верхнього лівого кута. Було б простіше співвіднести візуалізацію чи малюнок координатної осі, коли (0,0,0) знаходиться у верхньому лівому куті, а вісь Y у вікно, що йде на екран.


-2

Аргумент ЗА: (на прикладі)

var R uint32 = 0xFF0000FF; //:Red pixel
var W uint32 = 0xFFFFFFFF; //:White Pixel.
var Pixels []uint32 = { 
W,W,W,R,R,W,W,W,
W,W,R,R,R,R,W,W,
W,R,R,R,R,R,R,R,
W,W,W,R,R,W,W,W,   //:8x8 pixel image of " ↑ "
W,W,W,R,R,W,W,W,
W,W,W,R,R,W,W,W,
W,W,W,R,R,W,W,W,
W,W,W,R,R,W,W,W, }

Код відповідає результатам на екрані :

введіть тут опис зображення

Червона стрілка була б перевернутою, якщо ви НЕ використовуєте ліве верхнє ліворуч.

Я не можу сказати, чи це "чому". Просто це є вагомою причиною для верхнього лівого походження.


2
"Червона стрілка була б догори дном, якби ви НЕ використовували верхнє ліве походження" Так, так? Чи розробники ігор пишуть графіку через 2d масиви в коді більшу частину часу?
Vaillancourt

Я не можу говорити для всіх розробників ігор. Я також: newgrounds.com/portal/view/706067 Адам Атомний також добре читає вихідний код флікселя. Бібліотеки OpenGL і SFML безумовно є. OpenCL дозволяє абстрагувати точки даних у X / Y, (get_global_id (dim)), але початковий розподіл пам'яті становить 1D.
J MADISON
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.