Комп'ютерна двовимірна графіка (іноді комп'ютерна 2D-графіка) — комп'ютерне покоління цифрових зображень — головним чином складається з двовимірних моделей (таких як геометричні двовимірні моделі, текст і цифрові зображення) і методів, визначених для них. Термін може також позначати галузь інформатики, яка включає як методи, так і самі моделі.

Комп'ютерна 2D-графіка використовується, головним чином, в програмах, які були розроблені на базі традиційних технологій друку і малювання, таких як книгодрукування, картографія, креслення, реклама, тощо. У цих додатках двовимірне зображення — не просто представлення реального об'єкта, але і незалежний культурний експонат з власним семантичним значенням; тому двовимірні моделі є кращими, так як вони дають більш безпосередній контроль над зображенням, ніж комп'ютерна тривимірна графіка (підхід якої швидше схожий на фотографію, ніж типографію).

У багатьох областях, таких як комп'ютерна верстка, інженерія і бізнес, зображення документа, створеного методами комп'ютерної 2D-графіки, може бути суттєво зменшеним, ніж відповідне цифрове зображення — у 1000 разів, а то й навіть більше. Таке представлення більш гнучке, тому, що воно може бути відрендерено для різних значень роздільної здатності, що робить його придатним для різних пристроїв виведення. З цих причин документи і ілюстрації часто зберігаються або передаються як графічні 2D-файли.

Епоха комп'ютерної 2D-графіки почалася в 1950-х, і ґрунтувалася на пристроях векторної графіки. В наступні десятиліття вони в основному витіснялися пристроями, заснованими на растровій графіці. Мова PostScript і протоколи X Window System були віхами в цій області.

Методи 2D-графіки 2D-графічні моделі можуть об'єднувати (векторна графіка), цифрові зображення (растрова графіка), набраний текст (з певним змістом, стилем шрифту і розміром, кольором, положенням і орієнтацією), математичні функції, рівняння і інше. Ці компоненти можуть змінюватися і управлятися двовимірними геометричними перетвореннями, такими як паралельне перенесення, обертання, масштабування. У об'єктно-орієнтованій графіці зображення побічно описано об'єктом, наділеним методом самостійного рендеринга — процедура, яка призначає колір на пікселі зображення довільним алгоритмом. Складні моделі можуть бути побудовані об'єднанням більш простих об'єктів в парадигмах об'єктно-орієнтованого програмування.

У евклідовій геометрії паралельне перенесення переміщує кожну точку на однакову відстань в певному напрямку. Паралельне перенесення може бути описане як рух твердого тіла, також як і обертання і відбіття. Паралельне перенесення може також інтерпретуватися як додавання однакового вектора до кожної точки, або як зміна початку системи координат. Оператор паралельного перенесення — оператор такий, що .

Якщо v буде фіксованим вектором, то паралельне перенесення Tv буде відбуватися як Tv(p) = p + v.

Якщо T — паралельне перенесення, то зображення підмножини A під функцією T є перенесенням А по Т. Перенесення часто записується А + v.

В Евклідовому просторі будь-яке паралельне перенесення — ізометрія. Набір всіх паралельних перенесень формує групу паралельних перенесень Т, яка ізоморфна до самого простору і нормальної підгрупи Евклідовій групи E(n). Факторгрупа E(n) по T ізоморфна до ортогональної групи O(n): E(n) / T ≅ O(n).

Паралельне перенесення Так як паралельне перенесення — афінне перетворення, а не лінійне, однорідні координати зазвичай використовуються, щоб представити оператор паралельного перенесення у вигляді матриці і таким чином зробити його лінійним. Таким чином ми пишемо 3-мірний вектор w = (wx, wy, wz) використовуючи 4 однорідні координати як w = (wx, wy, wz, 1).Richard Paul, 1981, Robot manipulators: mathematics, programming, and control: the computer control of robot manipulators , MIT Press, Cambridge, MA

Щоб перенести об'єкт вектором v, кожен гомогенний вектор p (записаний в однорідних координатах) повинен бути помножений на матрицю паралельного перенесення:

Як показано нижче, множення дасть очікуваний результат:

Інверсія матриці паралельного перенесення може бути отримана, повністю змінивши напрямок вектора:

Такий же результат матриці паралельного перенесення виходить при додаванні векторів:

Оскільки додавання векторів комутативне, множення матриць паралельного перенесення також коммутативное (на відміну від множення довільних матриць)

Обертання

У лінійній алгебрі матриця обертання — матриця, яка використовується, щоб виконати обертання в Евклідовому просторі.

обертає точки в декартовій площині проти годинникової стрілки на кут θ від початку декартової системи координат. Щоб виконати обертання, використовуючи матрицю обертання R, положення кожної точки має бути представлено вектором-стовпцем v, що містить координати точки. Обертається вектор отриманий за допомогою матричного множення Rv. Так як матричне множення не має ніякого ефекту на нульовий вектор (тобто, на початок координат), матриці обертання можуть використовуватися тільки для опису обертання навколо початку системи координат.

Матриці обертання надають простий алгебраїчний опис таких обертань і активно використовуються для обчислень в геометрії, фізиці та комп'ютерній графіці. У 2-вимірному просторі обертання може бути просто описано кутом обертання θ, а також 4 елементами матриці обертання з 2 рядами і 2 колонками. У 3-вимірному просторі кожне обертання може інтерпретуватися як обертання на даний кут навколо єдиної фіксованої осі обертання (див. Теорема обертання Ейлера), і, отже, воно може бути просто описано кутом і вектором з 3 елементами. Однак воно може також бути представлено 9 елементами матриці обертання з 3 рядами і 3 колонками. Поняття обертання зазвичай не використовується в розмірах вище, ніж 3; є поняття обертального зміщення, яке може бути представлено матрицею, але при цьому ніяк не пов'язано з єдиною віссю або кутом. Матриці обертання — квадратні матриці з дійсними елементами. Більш конкретно вони можуть бути охарактеризовані як ортогональні матриці з детермінантою 1:

.

Множина всіх таких матриць розміру n формує групу, відому як спеціальна ортогональна група .

Двовимірна площина

У двох вимірах будь-яка матриця обертання має наступну форму:

.

Це обертає вектори-стовпці за допомогою наступного множення матриць:

.

Так, координати (x',y') точки (x, y) після обертання:

, .

Напрямок векторного обертання проти годинникової стрілки, якщо θ позитивний (наприклад, 90 °), і за годинниковою стрілкою якщо θ негативний (наприклад, -90 °).

.

Нестандартна орієнтація системи координат

Якщо використовується стандартна правобічна Декартова система координат з віссю x, спрямованою праворуч, і віссю y, спрямованої вгору, обертання R(θ) відбувається проти годинникової стрілки. Якщо ж застосовується лівостороння Декартова система координат з x, також спрямованим вправо, але з віссю y, спрямованої вниз, R(θ) направлено за годинниковою стрілкою. Такі нестандартні орієнтації рідко використовуються в математиці, але поширені в комп'ютерній 2D-графіці, яка часто має початок системи координат в лівому верхньому кутку і віссю Y, що йде вниз екрану або сторінки.

Поширені обертання

Особливо корисні матриці для обертань на 180° і на 90°:

(Обертання на 90° проти годинникової стрілки) (Обертання на 180° в будь-якому напрямку — на півоберта) (Обертання проти годинникової стрілки на 270°, так само, як і обертання за годинниковою стрілкою на 90°)

Масштабування

Масштабування може бути представлено матрицею масштабування. Для масштабування об'єкта вектором v = (vx, vy, vz), кожна точка p = (px, py, pz) повинна бути помножена на дану матрицю масштабування:

Як показано нижче, множення дасть очікуваний результат:

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

Масштабування рівномірно тоді й лише тоді, коли масштабні коефіцієнти рівні (vx = vy = vz). Якщо всі, крім одного з масштабних коефіцієнтів рівні 1, ми маємо спрямоване масштабування.

В геометрії Евкліда, рівномірне масштабування (ізотропне масштабування, гомотетія) являє собою лінійне відображення, збільшення або зменшення об'єктів на коефіцієнт масштабування, який однаковий за всіма напрямами. Результат рівномірного масштабування подібний (в геометричному сенсі) до оригіналу. Коефіцієнт масштабування 1, як правило, допускається, так що неконгруентні форми також класифікуються як схожі. (Деякі підручники спеціально виключають цю можливість, так само, як наприклад виключення того, що квадрати є прямокутниками або кола є еліпсами.)

Більш загальний випадок — це масштабування з окремим коефіцієнтом масштабування для кожного напрямку осі. Нерівномірне масштабування (Анізотропія|анізотропне масштабування) — масштабування, коли принаймні один з коефіцієнтів масштабування, відрізняється від інших; Особливий випадок являє собою спрямоване масштабування або розтягнення (в одному напрямку). Нерівномірний масштабування змінює форму об'єкта; наприклад, квадрат можна перетворити в прямокутник, або в паралелограм, якщо сторони квадрата не паралельні осям масштабування (кути між прямими, які паралельні осям, зберігаються, але не для всіх кутів).

Масштабування в найзагальнішому сенсі — Афінне перетворення з діагональною матрицею. Вона включає в себе випадок, коли три напрямки зміни масштабу зображення не перпендикулярні. Вона включає в себе також випадок, коли один або більше масштабних коефіцієнтів дорівнюють нулю (проєкція), а також випадок одного або декількох негативних масштабних коефіцієнтів. Останнє відповідає комбінації масштабування і належного вигляду відображення: уздовж ліній в певному напрямку, ми беремо відображення в точці перетину з площиною, яка не обов'язково повинна бути перпендикулярна; тому це є більш загальним випадком, ніж звичайне відображення на площині.

Використання однорідних координат

У проєктивній геометрії, яка часто використовується в комп'ютерній графіці, точки представлені з використанням однорідних координат. Для масштабування об'єкта вектором v = (vx, vy, vz), кожна точка p = (px, py, pz) повинна бути помножена на дану матрицю масштабування:

Як показано нижче, множення дасть очікуваний результат:

Так як останній компонент однорідних координат можна розглядати як знаменник трьох інших компонентів, масштабування за загальним коефіцієнтом s (рівномірне масштабування) може бути досягнуто за допомогою цієї матриці масштабування:

Для кожного вектора p = (px, py, pz, 1) ми мали б

яку є однорідною до

Малювання

Зручний спосіб створити складне зображення - почати з порожнього «полотна» растрової карти (масив пікселів, також відомий як бітова карта), заповненої деяким однорідним кольором, а потім «малювати» або «вставити» прості ділянки кольору, у відповідному порядку. Зокрема, полотно може бути кадровим буфером для дисплея.

Деякі програми безпосередньо встановлюють колір пікселів, але більшість з них буде спиратися на графічні 2D-бібліотеки і/або відеокарту, яка, як правило, буде здійснювати наступні операції: вставляти у вказане місце на полотно; писати рядок символів з заданим шрифтом, положенням і під заданим кутом; малювати прості геометричні фігури, наприклад, трикутник, з певними кутами, або коло з заданим центром і радіусом; малювати відрізок, дугу або просту криву віртуальним пером заданої ширини.

Розширені моделі кольорів

Текст, форми та лінії візуалізуються з кольорами, обраними користувачем. Велика кількість бібліотек і карт забезпечують колірні градієнти, які зручні для генерації плавно змінючихся фонів, ефектів тіней і т. д. (Див також: затемнення по Гуро). Піксельні кольори також можна взяти з текстури, наприклад, цифрового зображення.