2D компьютерная графика - это компьютерная генерация цифровых изображений - в основном из двухмерных моделей (таких как 2D геометрические модели, текст и цифровые изображения) и с помощью специфических для них методов. Это может относиться к разделу информатики, который включает такие методы, или к самим моделям.
Растровая графика спрайты (слева) и маски (справа)Компьютерная графика 2D в основном используется в приложениях, которые изначально были разработаны для традиционной печати и технологии рисования, такие как типографика, картография, технический рисунок, реклама и т. д. В этих приложениях два -мерное изображение - это не просто представление объекта реального мира, а независимый артефакт с добавленной семантической ценностью; поэтому предпочтительны двумерные модели, поскольку они дают более прямой контроль над изображением, чем трехмерная компьютерная графика (чей подход больше похож на фотографию, чем на типографику).
Во многих областях, таких как настольные издательские системы, инженерия и бизнес, описание документа на основе методов компьютерной графики 2D может быть намного меньше соответствующего цифрового изображения - часто в 1/1000 или более раз. Это представление также более гибкое, поскольку его можно визуализировать с разными разрешениями для соответствия различным устройствам вывода. По этим причинам документы и иллюстрации часто хранятся или передаются как файлы 2D-графики.
2D-компьютерная графика, начатая в 1950-х годах на основе устройств векторной графики. В последующие десятилетия они были в значительной степени вытеснены растровыми устройствами. Язык PostScript и протокол X Window System были знаковыми разработками в этой области.
2D-графические модели могут объединять геометрические модели (также называемые векторная графика ), цифровые изображения (также называемые растровой графикой ), текст должен быть наборным (определяется содержимым, шрифтом стилем и размером, цветом, положение и ориентация), математические функции и уравнения и многое другое. Эти компоненты могут быть изменены и ими можно управлять с помощью двумерных геометрических преобразований, таких как перемещение, вращение, масштабирование. В объектно-ориентированной графике изображение описывается косвенно объектом , наделенным само рендерингом методом - процедурой, которая назначает цвета изображения пикселей по произвольному алгоритму. Сложные модели могут быть построены путем комбинирования более простых объектов в парадигмах из объектно-ориентированного программирования.
Перевод перемещает каждую точку фигуры или пространства на одинаковую величину в заданном направлении. A отражение от оси, за которым следует отражение от второй оси, параллельной первой, приводит к общему движению, которое является переносом.В евклидовой геометрии, translation перемещает каждую точку на постоянное расстояние в указанном направлении. Смещение можно описать как жесткое движение : другие жесткие движения включают в себя вращения и отражения. Смещение также можно интерпретировать как добавление постоянного вектора к каждой точке или как сдвиг начала координат системы координат . Оператор преобразования является оператором такой, что
Если v равно фиксированный вектор, то перевод T vбудет работать как T v(p) = p+ v.
Если T - это перевод, то изображение подмножества A при функции T - это перевод слова A на T. Перевод A на T vчасто пишется A + v.
В евклидовом пространстве любой перевод - это изометрия. Набор всех трансляций образует группу трансляций T, которая изоморфна самому пространству, и нормальную подгруппу в евклидовой группе E (n). Фактор-группа группы E (n) по T изоморфна ортогональной группе O (n):
Поскольку перевод является аффинным преобразованием, но не линейным преобразованием, однородные координаты обычно используются для представления оператора перевода с помощью матрица и тем самым сделать ее линейной. Таким образом, мы запишем 3-мерный вектор w = (w x, w y, w z) с использованием 4 однородных координат как w = (w x, w y, w z, 1).
Чтобы перевести объект с помощью вектор v, каждый однородный вектор p (записанный в однородных координатах) необходимо умножить на эту матрицу трансляции :
Как показано ниже, умножение даст ожидаемый результат:
Матрица, обратная преобразованию, может быть получена путем изменения направления вектора:
Точно так же произведение матриц перевода получается путем сложения векторов:
Поскольку сложение векторов коммутативно, поэтому умножение матриц трансляции также коммутативно (в отличие от умножения произвольных матриц).
В линейной алгебре матрица вращения - это матрица, которая используется для выполнения вращение в евклидовом пространстве.
вращает точки в xy- декартовой плоскости против часовой стрелки на угол θ относительно начала координат Декартова система координат. Чтобы выполнить поворот с использованием матрицы вращения R, положение каждой точки должно быть представлено вектором-столбцом v, содержащим координаты точки. Повернутый вектор получается с использованием умножения матриц Rv. Поскольку умножение матриц не влияет на нулевой вектор (т.е. на координаты начала координат), матрицы вращения можно использовать только для описания поворотов относительно начала координат системы координат.
Матрицы вращения обеспечивают простое алгебраическое описание таких вращений и широко используются для вычислений в геометрии, физике и компьютерной графике. В 2-мерном пространстве поворот может быть просто описан углом θ поворота, но он также может быть представлен 4 элементами матрицы вращения с 2 строками и 2 столбцами. В трехмерном пространстве каждое вращение можно интерпретировать как вращение на заданный угол вокруг единственной фиксированной оси вращения (см. теорему Эйлера о вращении ), и, следовательно, его можно просто описать как угол и вектор с 3 записями. Однако он также может быть представлен 9 элементами матрицы вращения с 3 строками и 3 столбцами. Понятие вращения обычно не используется для измерений больше 3; есть понятие вращательного смещения, которое может быть представлено матрицей, но без связанной единственной оси или угла.
Матрицы поворота - это квадратные матрицы с действительными записями. Более конкретно, их можно охарактеризовать как ортогональные матрицы с определителем 1:
Набор всех таких матриц размера n образует группу, известную как специальная ортогональная группа SO (п).
В двух измерениях каждая матрица вращения имеет следующий вид:
Это вращается на векторы-столбцы с помощью следующего умножения матриц :
Итак, координаты (x ', y') точки (x, y) после поворота:
Направление вращения вектора - против часовой стрелки, если θ положительно (например, 90 °), и по часовой стрелке, если θ отрицательно (например, -90 °).
Если используется стандартная правосторонняя декартова система координат, с осью x вправо и осью y вверх, вращение R (θ) происходит против часовой стрелки. Если используется левая декартова система координат, где x направлен вправо, а y направлен вниз, R (θ) - по часовой стрелке. Такие нестандартные ориентации редко используются в математике, но распространены в компьютерной 2D-графике, которая часто имеет начало в верхнем левом углу и ось Y вниз по экрану или странице.
См. ниже. для других альтернативных соглашений, которые могут изменить направление вращения, производимое матрицей вращения.
Особенно полезны матрицы для поворотов на 90 ° и 180 °:
В евклидовой геометрии, равномерное масштабирование (изотропное масштабирование, однородное расширение, гомотетия ) - это линейное преобразование, которое увеличивает (увеличивает) или сжимает (уменьшает) объекты на масштабный коэффициент, одинаковый во всех направлениях. Результат равномерного масштабирования аналогичен (в геометрическом смысле) исходному. Обычно допускается масштабный коэффициент 1, поэтому конгруэнтные формы также считаются подобными. (Некоторые школьные учебники специально исключают эту возможность, так же как некоторые исключают квадраты из прямоугольников или кружков из эллипсов.)
Более общим является масштабирование с отдельным масштабным коэффициентом для каждого направления оси.. Неравномерное масштабирование (анизотропное масштабирование, неоднородное расширение ) получается, когда по меньшей мере один из коэффициентов масштабирования отличается от других; особым случаем является направленное масштабирование или растяжение (в одном направлении). Неравномерное масштабирование изменяет форму объекта; например квадрат может превратиться в прямоугольник или параллелограмм, если стороны квадрата не параллельны осям масштабирования (углы между линиями, параллельными осям, сохраняются, но не все углы).
Масштабирование может быть представлено матрицей масштабирования. Чтобы масштабировать объект по вектору v = (v x, v y, v z), каждая точка p = (p x, p y, p z) необходимо умножить на эту матрицу масштабирования:
Как показано ниже, умножение даст ожидаемый результат:
Такое масштабирование изменяет диаметр объекта на коэффициент между масштабными коэффициентами, площадь на коэффициент между наименьшее и наибольшее произведение двух масштабных коэффициентов и объем на произведение всех трех.
Масштабирование является равномерным тогда и только тогда, когда коэффициенты масштабирования равны (v x = v y = v z). Если все масштабные коэффициенты, кроме одного, равны 1, мы имеем масштабирование по направлению.
В случае, когда v x = v y = v z = k, масштабирование также называется увеличением или расширение в k раз, увеличивая площадь в k раз, а объем в k раз.
Масштабирование в самом общем смысле - это любое аффинное преобразование с диагонализуемой матрицей. Сюда входит случай, когда три направления масштабирования не перпендикулярны. Он также включает случай, когда один или несколько масштабных коэффициентов равны нулю (проекция ), и случай одного или нескольких отрицательных масштабных коэффициентов. Последнее соответствует комбинации собственно масштабирования и своего рода отражения: вдоль линий в определенном направлении мы берем отражение в точке пересечения с плоскостью, которая не обязательно должна быть перпендикулярной; следовательно, это более общее, чем обычное отражение на плоскости.
В проективной геометрии, часто используемой в компьютерной графике, точки представлены с использованием однородных координат. Чтобы масштабировать объект по вектору v = (v x, v y, v z), каждый однородный вектор координат p = (p x, p y, p z, 1) необходимо умножить на эту матрицу проективного преобразования :
Как показано ниже, умножение даст ожидаемый результат:
Поскольку последний компонент однородной координаты можно рассматривать как знаменатель трех других компонентов, равномерное масштабирование с помощью общего множителя s (равномерное масштабирование) может быть выполнено с помощью этой матрицы масштабирования:
Для каждого вектора p = (p x, p y, p z, 1) мы бы имели
, который будет гомогенизирован с
Удобный способ для создания сложного изображения необходимо начать с пустого «холста» растровой карты (массива пикселей, также известного как растровое изображение ), заполненного некоторой однородной цвет фона, а затем «нарисуйте», «раскрасьте» или «приклейте» на него простые цветные пятна в соответствующем порядке. В частности, холст может быть буфером кадра для компьютерного дисплея.
Некоторые программы будут устанавливать цвета пикселей напрямую, но большинство будет полагаться на некоторую 2D графическую библиотеку или видеокарта машины , которая обычно реализует следующие операции:
Текст, фигуры и линии отображаются в цвете, заданном клиентом. Многие библиотеки и карточки предоставляют цветовые градиенты, которые удобны для создания плавно меняющегося фона, эффектов теней и т. Д. (См. Также Затенение по Гуро ). Цвета пикселей также могут быть взяты из текстуры, например цифровое изображение (имитирующее натертые скринтоны и легендарную клетчатую краску, которая раньше была доступна только в мультфильмах ).
Закрашивание пикселя заданным цветом обычно заменяет его предыдущий цвет. Однако многие системы поддерживают рисование с помощью цветов прозрачный и полупрозрачный, которые изменяют только предыдущие значения пикселей. Два цвета также можно комбинировать более сложными способами, например вычисляя их побитовое исключающее или. Этот метод известен как инвертирование цвета или инверсия цвета и часто используется в графических пользовательских интерфейсах для выделения, рисования с помощью резиновой ленты и другого нестабильного рисования, поскольку повторное окрашивание тех же форм в тот же цвет будет восстановить исходные значения пикселей.
Модели, используемые в компьютерной 2D-графике, обычно не обеспечивают трехмерных форм или трехмерных фигур. пространственные оптические явления, такие как освещение, тени, отражение, преломление и т. д. Однако они обычно могут моделировать несколько слоев (концептуально чернил, бумаги или пленки ; непрозрачный, полупрозрачный или прозрачный - сгруппированы в определенном порядке. Порядок обычно определяется одним числом (глубина слоя или расстояние от зрителя).
Многослойные модели иногда называют «компьютерной графикой 2 ⁄ 2 -D». Они позволяют имитировать традиционные методы черчения и печати на пленке и бумаге, такие как вырезание и наклеивание; и позволяют пользователь может редактировать любой слой, не затрагивая другие. По этим причинам они используются в большинстве. Слоистые модели также позволяют улучшить пространственное сглаживание сложных чертежей и Создайте звуковую модель для определенных методов, таких как косые стыки, и правило чет-нечетность.
Многослойные модели также используются, чтобы позволить пользователю подавлять нежелательную информацию при просмотре или печати документа, например автомобильные или железные дороги из карты , определенные слои процесса из диаграммы интегральной схемы или ручные аннотации из делового письма.
В модели на основе слоев целевое изображение создается путем «рисования» или «вставки» каждого слоя в порядке уменьшения глубины на виртуальный холст. По идее, каждый слой сначала визуализируется сам по себе, в результате получается цифровое изображение с желаемым разрешением, которое затем наносится на холст, пиксель за пикселем. Разумеется, рендеринг полностью прозрачных частей слоя не требуется. Визуализация и рисование могут выполняться параллельно, то есть каждый пиксель слоя может быть нарисован на холсте, как только он создается процедурой визуализации.
Слои, состоящие из сложных геометрических объектов (например, текст или полилинии ), могут быть разбиты на более простые элементы (символы или сегменты линии соответственно), которые затем окрашиваются как отдельные слои в определенном порядке. Однако это решение может создавать нежелательные артефакты наложения, когда два элемента перекрывают один и тот же пиксель.
См. Также Формат переносимого документа # Слои.
Современные компьютеры графические карты почти в подавляющем большинстве используют растровые технологии, разделяя экран на прямоугольная сетка из пикселей из-за относительно низкой стоимости оборудования для обработки растровых видео по сравнению с оборудованием для векторной графики. Большая часть графического оборудования имеет внутреннюю поддержку операций копирования или рисования спрайтов. Сопроцессор , предназначенный для блиттинга, известен как микросхема блиттера.
Классические 2D графические чипы и графические процессоры конца 1970-х - 1980-х годов, используемые в 8-бит - начале 16 -bit, аркадные игры, игровые консоли и домашние компьютеры, включая:
Многие графические пользовательские интерфейсы (GUI), включая macOS, Microsoft Windows или X Window System, в основном основаны на концепции 2D-графики с. Такое программное обеспечение обеспечивает визуальную среду для взаимодействия с компьютером и обычно включает в себя некоторую форму оконного менеджера, чтобы помочь пользователю в концептуальном различении различных приложений. Пользовательский интерфейс в отдельных программных приложениях также обычно двухмерный по своей природе, частично из-за того, что наиболее распространенные устройства ввода, такие как мышь, ограничены двумя измерениями: движение.
2D-графика очень важна для периферийных устройств управления, таких как принтеры, плоттеры, машины для резки листов и т. Д. Они также использовались в большинстве ранних видеоигр ; и до сих пор используются для карточных и настольных игр, таких как пасьянс, шахматы, маджонг и т. д.
2D-графические редакторы или программы для рисования. программное обеспечение прикладного уровня для создания изображений, диаграмм и иллюстраций путем прямого манипулирования (с помощью мыши, графического планшета или аналогичного устройства) примитивами 2D компьютерной графики. Эти редакторы обычно предоставляют геометрические примитивы, а также цифровые изображения ; а некоторые даже поддерживают процедурные модели. Иллюстрация обычно представлена внутри как многоуровневая модель, часто с иерархической структурой, чтобы сделать редактирование более удобным. Эти редакторы обычно выводят графические файлы, где слои и примитивы отдельно сохраняются в их исходной форме. MacDraw, представленный в 1984 году с линейкой компьютеров Macintosh, был ранним примером этого класса; недавними примерами являются коммерческие продукты Adobe Illustrator и CorelDRAW, а также бесплатные редакторы, такие как xfig или Inkscape. Существует также множество редакторов 2D-графики, специализирующихся на определенных типах чертежей, таких как электрические, электронные схемы и схемы СБИС, топографические карты, компьютерные шрифты и т. Д.
Редакторы изображений специализируются на обработке цифровых изображений, в основном с помощью операций рисования / раскрашивания от руки и обработки сигналов. Обычно они используют парадигму прямого рисования, когда пользователь управляет виртуальными перьями, кистями и другими художественными инструментами от руки для нанесения краски на виртуальный холст. Некоторые редакторы изображений поддерживают многослойную модель; однако для поддержки таких операций обработки сигналов, как размытие, каждый слой обычно представляется как цифровое изображение. Поэтому любые геометрические примитивы, предоставленные редактором, немедленно преобразуются в пиксели и рисуются на холсте. Название «редактор растровой графики» иногда используется, чтобы противопоставить этот подход подходу обычных редакторов, которые также обрабатывают векторную графику. Одним из первых популярных редакторов изображений был Apple MacPaint, компаньон MacDraw. Современные примеры - бесплатный редактор GIMP и коммерческие продукты Photoshop и Paint Shop Pro. Этот класс также включает в себя множество специализированных редакторов - для медицины, дистанционного зондирования, цифровой фотографии и т. Д.
С возрождением 2D-анимации бесплатное и проприетарное программное обеспечение пакеты стали широко доступны для любителей и профессиональных аниматоров. Основная проблема с 2D-анимацией - это трудозатраты. С помощью таких программ, как RETAS UbiArt Framework и Adobe After Effects, раскрашивание и композитинг можно выполнять за меньшее время.
Были разработаны различные подходы чтобы помочь и ускорить процесс цифровой 2D-анимации. Например, с помощью такого инструмента, как Adobe Flash, художник может использовать автоматическую раскраску, управляемую программным обеспечением, а промежуточные.
Программы, такие как Blender, позволяют пользователю делать либо 3D-анимация, 2D-анимация или их сочетание в программном обеспечении, позволяющее экспериментировать с несколькими формами анимации.
На Викискладе есть материалы, связанные с 2D. |