2D компьютерная графика - 2D computer graphics

Двумерная компьютерная графика - это компьютерная генерация цифровых изображений, в основном из двумерных моделей (таких как двухмерные геометрические модели , текст и цифровые изображения), а также с помощью специфических для них методов. Это может относиться к отрасли информатики, которая включает такие методы, или к самим моделям.

Спрайты растровой графики (слева) и маски (справа)

2D компьютерная графика в основном используется в приложениях, которые изначально были разработаны на основе традиционных технологий печати и рисования , таких как типография , картография , технический рисунок , реклама и т. Д. В этих приложениях двухмерное изображение - это не просто представление реального изображения. мировой объект, но независимый артефакт с добавленной семантической ценностью; Поэтому предпочтение отдается двумерным моделям, поскольку они дают более прямой контроль над изображением, чем трехмерная компьютерная графика (подход которой больше похож на фотографию, чем на типографику).

Во многих областях, таких как настольные издательские системы , инженерия и бизнес , описание документа, основанное на методах компьютерной 2D-графики, может быть намного меньше, чем соответствующее цифровое изображение - часто в 1/1000 или более раз. Это представление также более гибкое, поскольку оно может отображаться с разным разрешением, чтобы соответствовать различным устройствам вывода . По этим причинам документы и иллюстрации часто хранятся или передаются в виде файлов 2D-графики .

2D компьютерная графика началась в 1950-х годах на основе устройств векторной графики . В последующие десятилетия они были в значительной степени вытеснены растровыми устройствами . Язык PostScript и протокол X Window System были знаковыми разработками в этой области.

Методы

Графические модели 2D может сочетать геометрические модели (также называемые векторной графики ), цифровые изображения (называемые также растровой графики ), текст будет набрана (определенные по содержанию, шрифта стиль и размер, цвет, положение и ориентацию), математических функций и уравнений , и более. Эти компоненты можно изменять и манипулировать с помощью двухмерных геометрических преобразований, таких как перемещение , вращение , масштабирование . В объектно-ориентированной графике , изображение описываются косвенным образом с помощью объекта , наделенного самостоятельного рендеринга метода процедуры -a , который присваивает цвета изображения пикселей произвольного алгоритма. Сложные модели могут быть построены путем объединения простых объектов, в парадигмах в объектно-ориентированном программировании .

Перевод перемещает каждую точку фигуры или пространства на одинаковую величину в заданном направлении.
Отражением против оси с последующим отражением от второй оси , параллельной первой одной приводит к общему движению , которое является переводом.

В евклидовой геометрии , A перевод движется каждая точка постоянное расстояние в указанном направлении. Смещение можно описать как жесткое движение : другие жесткие движения включают вращения и отражения. Смещение также можно интерпретировать как добавление постоянного вектора к каждой точке или как сдвиг начала системы координат . Оператор сдвига является оператором таким образом, что

Если v - фиксированный вектор, то перевод T v будет работать как T v ( p ) = p + v .

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

В евклидовом пространстве любой перенос является изометрией . Множество всех переводов форм перевода группа Т , которая изоморфна само пространство, а нормальная подгруппа из евклидовой группы Е ( п ). Фактор - группа из Е ( п ) по Т изоморфна ортогональной группы O ( п ):

E ( n ) / TO ( n ).

Перевод

Поскольку перенос является аффинным преобразованием, но не линейным преобразованием , однородные координаты обычно используются для представления оператора перевода в виде матрицы и, таким образом, для того, чтобы сделать его линейным. Таким образом, мы запишем 3-мерный вектор w = ( w x , w y , w z ), используя 4 однородные координаты, как w = ( w x , w y , w z , 1).

Чтобы перевести объект вектором v , каждый однородный вектор p (записанный в однородных координатах) необходимо умножить на эту матрицу перевода :

Как показано ниже, умножение даст ожидаемый результат:

Обратную матрицу переноса можно получить, изменив направление вектора на противоположное:

Точно так же произведение матриц перевода получается путем сложения векторов:

Поскольку сложение векторов коммутативно , умножение матриц трансляции также коммутативно (в отличие от умножения произвольных матриц).

Вращение

В линейной алгебре , А матрица вращения представляет собой матрицу , которая используется для выполнения вращения в евклидовом пространстве .

Поворот точки в ху - декартовой плоскости против часовой стрелки на угол & thetas о происхождении системы декартовых координат . Чтобы выполнить вращение с использованием матрицы вращения R , положение каждой точки должно быть представлено вектором-столбцом v , содержащим координаты точки. Повернутый вектор получается с помощью умножения матриц R v . Поскольку умножение матриц не влияет на нулевой вектор (т. Е. На координаты начала координат), матрицы вращения могут использоваться только для описания поворотов относительно начала координат системы координат.

Матрицы вращения обеспечивают простое алгебраическое описание таких вращений и широко используются для вычислений в геометрии , физике и компьютерной графике . В 2-мерном пространстве, вращение может быть просто описывается углом & thetas вращения , но она может быть также представлен 4 элементов матрицы поворота с 2 -х строк и 2 столбцов. В трехмерном пространстве каждое вращение можно интерпретировать как вращение на заданный угол вокруг одной фиксированной оси вращения (см . Теорему Эйлера о вращении ), и, следовательно, его можно просто описать углом и вектором с 3 элементами. Однако он также может быть представлен 9 элементами матрицы вращения с 3 строками и 3 столбцами. Понятие вращения обычно не используется в размерах больше 3; есть понятие вращательного смещения , которое может быть представлено матрицей, но не связано с единственной осью или углом.

Матрицы вращения - это квадратные матрицы с действительными элементами. Более конкретно их можно охарактеризовать как ортогональные матрицы с определителем  1:

.

Множество всех таких матриц размера п образует группы , известные как специальная ортогональной группа SO ( п ) .

В двух измерениях

Поворот вектора на угол θ против часовой стрелки . Вектор изначально выровнен по оси x.

В двух измерениях каждая матрица вращения имеет следующий вид:

.

Это поворачивает векторы-столбцы посредством следующего умножения матриц :

.

Итак, координаты (x ', y') точки (x, y) после поворота:

,
.

Направление вращения вектора - против часовой стрелки, если θ положительно (например, 90 °), и по часовой стрелке, если θ отрицательно (например, -90 °).

.

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

Поворот на угол θ с нестандартными осями.

Если используется стандартная правая декартова система координат с осью x вправо и осью y вверх, вращение R ( θ ) происходит против часовой стрелки. Если используется левая декартова система координат, где x направлен вправо, а y направлен вниз, R ( θ ) - по часовой стрелке. Такие нестандартные ориентации редко используются в математике, но распространены в компьютерной 2D-графике, которая часто имеет начало в верхнем левом углу и ось Y вниз по экрану или странице.

См. Ниже другие альтернативные соглашения, которые могут изменить направление вращения, производимое матрицей вращения .

Общие вращения

Особенно полезны матрицы для поворота на 90 ° и 180 °:

(Вращение на 90 ° против часовой стрелки)
(Поворот на 180 ° в обе стороны - пол-оборота)
(Вращение на 270 ° против часовой стрелки, то же, что и вращение на 90 ° по часовой стрелке)

В евклидовой геометрии , равномерное масштабирование ( изотропное масштабирование , однородная дилатацию , гомотетия ) представляет собой линейное преобразование , что увеличивает (увеличивается) или сжимается (уменьшается) объекты с помощью масштабного коэффициента , который одинаков во всех направлениях. Результат равномерного масштабирования аналогичен (в геометрическом смысле) оригиналу. Обычно допускается масштабный коэффициент 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 2 раз, а объем в k 3 .

Масштабирование в самом общем смысле - это любое аффинное преобразование с диагонализуемой матрицей . Сюда входит случай, когда три направления масштабирования не перпендикулярны. Он также включает случай, когда один или несколько масштабных коэффициентов равны нулю ( проекция ), и случай одного или нескольких отрицательных масштабных коэффициентов. Последнее соответствует комбинации собственно масштабирования и своего рода отражения: вдоль линий в определенном направлении мы берем отражение в точке пересечения с плоскостью, которая не обязательно должна быть перпендикулярной; следовательно, это более общее, чем обычное отражение на плоскости.

Использование однородных координат

В проективной геометрии , часто используемой в компьютерной графике , точки представляются с использованием однородных координат . Чтобы масштабировать объект вектором 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 1 / 2 -D компьютерной графикой». Они позволяют имитировать традиционные методы рисования и печати на основе пленки и бумаги, такие как вырезание и склеивание; и позволить пользователю редактировать любой слой, не затрагивая другие. По этим причинам они используются в большинстве графических редакторов . Многослойные модели также позволяют улучшить пространственное сглаживание сложных рисунков и обеспечивают звуковую модель для определенных техник, таких как скошенные соединения и правило четности и нечетности .

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

В модели на основе слоев целевое изображение создается путем «рисования» или «вставки» каждого слоя в виртуальный холст в порядке уменьшения глубины. По сути, каждый слой сначала визуализируется отдельно, в результате получается цифровое изображение с желаемым разрешением, которое затем наносится на холст, пиксель за пикселем. Конечно, полностью прозрачные части слоя рендерить не нужно. Визуализация и рисование могут выполняться параллельно, то есть каждый пиксель слоя может быть нарисован на холсте, как только он создается процедурой визуализации.

Слои, состоящие из сложных геометрических объектов (таких как текст или полилинии ), могут быть разбиты на более простые элементы ( символы или сегменты линий соответственно), которые затем раскрашиваются как отдельные слои в определенном порядке. Однако это решение может создавать нежелательные артефакты наложения спектров, когда два элемента перекрывают один и тот же пиксель.

См. Также Portable Document Format # Layers .

Аппаратное обеспечение

В дисплеях современных компьютерных видеокарт почти в подавляющем большинстве используются растровые технологии, разделяющие экран на прямоугольную сетку пикселей из-за относительно низкой стоимости оборудования для обработки растровых видео по сравнению с оборудованием для векторной графики. Большинство графического оборудования имеет внутреннюю поддержку операций копирования или рисования спрайтов . Сопроцессор , посвященный блиттинг известен как блиттер чип .

Классический 2D графических чипов и графических процессоров конца 1970 - х до 1980 - х годов, используемых в 8-битном в начале 16-бит , аркада игры , игровые приставки и домашние компьютеры , включают в себя:

Программное обеспечение

Многие графические пользовательские интерфейсы (ГПИ), в том числе MacOS , Microsoft Windows , или системы X Window , в первую очередь на основе 2D графических концепций. Такое программное обеспечение обеспечивает визуальную среду для взаимодействия с компьютером и обычно включает в себя некоторую форму оконного менеджера, чтобы помочь пользователю концептуально различать различные приложения. Пользовательский интерфейс в отдельных программных приложениях также обычно двухмерный по своей природе, отчасти из-за того, что наиболее распространенные устройства ввода , такие как мышь , ограничены двумя измерениями движения.

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

Редакторы 2D-графики или программы рисования - это программное обеспечение прикладного уровня для создания изображений, диаграмм и иллюстраций путем прямого манипулирования (с помощью мыши, графического планшета или аналогичного устройства) примитивами 2D-компьютерной графики. Эти редакторы обычно предоставляют геометрические примитивы, а также цифровые изображения ; а некоторые даже поддерживают процедурные модели. Иллюстрация обычно представлена ​​внутри как многоуровневая модель, часто с иерархической структурой, чтобы сделать редактирование более удобным. Эти редакторы обычно выводят графические файлы, в которых слои и примитивы отдельно сохраняются в исходной форме. MacDraw , представленный в 1984 году вместе с линейкой компьютеров Macintosh , был ранним примером этого класса; недавними примерами являются коммерческие продукты Adobe Illustrator и CorelDRAW , а также бесплатные редакторы, такие как xfig или Inkscape . Существует также множество редакторов 2D-графики, специализирующихся на определенных типах чертежей, таких как электрические, электронные схемы и схемы СБИС, топографические карты, компьютерные шрифты и т. Д.

Редакторы изображений специализируются на работе с цифровыми изображениями , в основном с помощью рисования / рисования от руки и операций обработки сигналов . Обычно они используют парадигму прямого рисования, когда пользователь управляет виртуальными ручками, кистями и другими художественными инструментами от руки для нанесения краски на виртуальный холст. Некоторые редакторы изображений поддерживают многослойную модель; однако для поддержки таких операций обработки сигналов, как размытие, каждый слой обычно представляется как цифровое изображение. Следовательно, любые геометрические примитивы, предоставляемые редактором, немедленно преобразуются в пиксели и рисуются на холсте. Название « редактор растровой графики» иногда используется, чтобы противопоставить этот подход подходу обычных редакторов, которые также обрабатывают векторную графику . Одним из первых популярных графических редакторов был Apple , «s MacPaint , компаньон MacDraw . Современные примеры - бесплатный редактор GIMP и коммерческие продукты Photoshop и Paint Shop Pro . В этот класс также входят многие специализированные редакторы - для медицины, дистанционного зондирования, цифровой фотографии и т. Д.

Развивающая анимация

С возрождением 2D-анимации бесплатные и проприетарные пакеты программного обеспечения стали широко доступны для любителей и профессиональных аниматоров. Основная проблема с 2D-анимацией - это трудозатраты. С помощью такого программного обеспечения, как RETAS UbiArt Framework и Adobe After Effects , раскрашивание и композитинг можно выполнять за меньшее время.

Для ускорения процесса цифровой 2D-анимации были разработаны различные подходы. Например, создавая векторную графику в таком инструменте, как Adobe Flash , художник может использовать программную автоматическую раскраску и переходы между ними .

Такие программы, как Blender, позволяют пользователю выполнять либо 3D-анимацию, либо 2D-анимацию, либо комбинировать и то, и другое в своем программном обеспечении, позволяя экспериментировать с несколькими формами анимации.

Смотрите также

использованная литература