Введение
Компьютерная генерация цифровых изображений
Двумерная компьютерная графика — это компьютерная генерация цифровых изображений, преимущественно из двухмерных моделей (таких как 2D геометрические модели, текст и цифровые изображения) с использованием специфических для них методов. Она может относиться как к области информатики, охватывающей эти методы, так и к самим моделям. Двумерная компьютерная графика в основном используется в приложениях, изначально разработанных на основе традиционных технологий печати и рисования, таких как типография, картография, технический чертеж, реклама и т. д. В этих приложениях двумерное изображение является не просто представлением реального объекта, а самостоятельным артефактом с добавленной семантической ценностью; поэтому предпочтение отдается двумерным моделям, поскольку они обеспечивают более прямой контроль над изображением, чем трехмерная компьютерная графика (подход которой больше напоминает фотографию, чем типографию). Во многих областях, таких как настольное издательство, инженерия и бизнес, описание документа, основанное на методах двумерной компьютерной графики, может быть значительно меньше соответствующего цифрового изображения — часто в 1/1000 раз или более. Это представление также более гибкое, поскольку его можно отображать с разным разрешением для различных выходных устройств. По этим причинам документы и иллюстрации часто хранятся или передаются в виде 2D графических файлов. Двумерная компьютерная графика зародилась в 1950-х годах на основе векторных графических устройств. В последующие десятилетия они были в значительной степени вытеснены растровыми устройствами. Язык PostScript и протокол X Window System стали важными вехами в этой области. 2D графические модели могут сочетать в себе геометрические модели (также известные как векторная графика), цифровые изображения (также известные как растровая графика), текст для набора (определяемый содержанием, стилем и размером шрифта, цветом, положением и ориентацией), математические функции и уравнения и многое другое. Эти компоненты могут быть изменены и обработаны с помощью двумерных геометрических преобразований, таких как сдвиг, вращение и масштабирование. В объектно-ориентированной графике изображение описывается косвенно объектом, оснащенным методом самоотображения — процедурой, которая назначает цвета пикселям изображения с помощью произвольного алгоритма. Сложные модели могут быть построены путем объединения более простых объектов в парадигмах объектно-ориентированного программирования.
Основы (геометрия)
В евклидовой геометрии, сдвиг (геометрия) перемещает каждую точку на постоянное расстояние в заданном направлении. Сдвиг можно описать как жесткое преобразование: другие жесткие преобразования включают вращения и отражения. Сдвиг также можно интерпретировать как добавление постоянного вектора к каждой точке или как смещение начала координат. Оператор сдвига – это оператор, такой что, если v – фиксированный вектор, то сдвиг Tv действует как Tv(p) = p + v.
If v is a fixed vector, then the translation Tv will work as Tv(p) = p + v.
If T is a translation, then the image of a subset A under the function T is the translation of A by T. The translation of A by Tv is often written A + v.
In a Euclidean space, any translation is an isometry. The set of all translations forms the translation group T, which is isomorphic to the space itself, and a normal subgroup of Euclidean group E(n ). The quotient group of E(n ) by T is isomorphic to the orthogonal group O(n ):
E(n ) / T ≅ O(n ).
Если T – сдвиг, то образ подмножества A под функцией T является сдвигом A на T. Сдвиг A на Tv часто записывается как A + v.
If v is a fixed vector, then the translation Tv will work as Tv(p) = p + v.
If T is a translation, then the image of a subset A under the function T is the translation of A by T. The translation of A by Tv is often written A + v.
In a Euclidean space, any translation is an isometry. The set of all translations forms the translation group T, which is isomorphic to the space itself, and a normal subgroup of Euclidean group E(n ). The quotient group of E(n ) by T is isomorphic to the orthogonal group O(n ):
E(n ) / T ≅ O(n ).
В евклидовом пространстве любой сдвиг является изометрией. Множество всех сдвигов образует группу сдвигов T, которая изоморфна самому пространству и является нормальной подгруппой евклидовой группы E(n). Факторгруппа E(n) по T изоморфна ортогональной группе O(n):
E(n) / T ≅ O(n).
If v is a fixed vector, then the translation Tv will work as Tv(p) = p + v.
If T is a translation, then the image of a subset A under the function T is the translation of A by T. The translation of A by Tv is often written A + v.
In a Euclidean space, any translation is an isometry. The set of all translations forms the translation group T, which is isomorphic to the space itself, and a normal subgroup of Euclidean group E(n ). The quotient group of E(n ) by T is isomorphic to the orthogonal group O(n ):
E(n ) / T ≅ O(n ).
Ротация
В линейной алгебре матрица вращения — это матрица, используемая для выполнения вращения в евклидовом пространстве. Она вращает точки на декартовой плоскости xy против часовой стрелки на угол θ относительно начала координат декартовой системы координат. Для выполнения вращения с использованием матрицы вращения R, положение каждой точки должно быть представлено столбцовым вектором v, содержащим координаты точки. Вращённый вектор получается посредством матричного умножения Rv. Поскольку матричное умножение не оказывает влияния на нулевой вектор (то есть на координаты начала координат), матрицы вращения могут использоваться только для описания вращений вокруг начала системы координат. Матрицы вращения обеспечивают простое алгебраическое описание таких вращений и широко используются для вычислений в геометрии, физике и компьютерной графике. В двумерном пространстве вращение можно просто описать углом θ вращения, но его также можно представить четырьмя элементами матрицы вращения с 2 строками и 2 столбцами. В трёхмерном пространстве каждое вращение можно интерпретировать как вращение на заданный угол вокруг одной фиксированной оси вращения (см. теорему Эйлера о вращении), и, следовательно, его можно просто описать углом и вектором из 3 элементов. Однако его также можно представить девятью элементами в матрице вращения с 3 строками и 3 столбцами. Понятие вращения обычно не используется в размерностях выше 3; существует понятие вращательного перемещения, которое можно представить матрицей, но не связанного с единой осью или углом. Матрицы вращения — это квадратные матрицы с вещественными элементами. Более конкретно, их можно охарактеризовать как ортогональные матрицы с детерминантом 1: множество всех таких матриц размера n образует группу, известную как специальная ортогональная группа SO(n).
The set of all such matrices of size n forms a group, known as the special orthogonal group SO(n).
Нестандартная ориентация системы координат
Если используется стандартная правосторонняя декартова система координат, с осью x, направленной вправо, и осью y, направленной вверх, вращение R(θ) будет происходить против часовой стрелки. Если используется левосторонняя декартова система координат, при которой ось x направлена вправо, а ось y – вниз, вращение R(θ) будет происходить по часовой стрелке. Такие нестандартные ориентации редко используются в математике, но распространены в 2D компьютерной графике, где начало координат часто находится в левом верхнем углу, а ось y направлена вниз по экрану или странице. Ниже приведены другие альтернативные соглашения, которые могут изменить направление вращения, задаваемого матрицей вращения.
Расширенные цветные модели
Текст, фигуры и линии отрисовываются цветом, заданным клиентом. Многие библиотеки и видеокарты предоставляют цветовые градиенты, которые удобны для создания плавно меняющихся фонов, эффектов тени и т.п. (См. также затенение Гуро). Цвета пикселей также могут быть взяты из текстуры, например, цифрового изображения (тем самым имитируя растушеванные тона и знаменитую шахматную покраску, которая ранее использовалась только в мультфильмах). Закраска пикселя заданным цветом обычно заменяет его предыдущий цвет. Однако многие системы поддерживают закраску прозрачными и полупрозрачными цветами, которые лишь модифицируют предыдущие значения пикселей. Два цвета также могут быть объединены более сложными способами, например, путем вычисления их битового исключающего ИЛИ. Эта техника известна как инвертирование цвета или цветовая инверсия и часто используется в графических пользовательских интерфейсах для выделения, рисования прямоугольников выделения и других временных операций рисования, поскольку повторная отрисовка одних и тех же фигур тем же цветом восстановит исходные значения пикселей.
Слои
Модели, используемые в 2D-компьютерной графике, обычно не предусматривают трехмерных форм или трехмерных оптических явлений, таких как освещение, тени, отражение, преломление и т. д. Однако, как правило, они могут моделировать несколько слоев (концептуально чернил, бумаги или пленки; непрозрачные, полупрозрачные или прозрачные), расположенных в определенном порядке. Порядок обычно определяется одним числом (глубина слоя или расстояние от зрителя). Слоистые модели иногда называют "2½D компьютерной графикой". Они позволяют имитировать традиционные методы черчения и печати, основанные на пленке и бумаге, такие как вырезание и вставка; и позволяют пользователю редактировать любой слой, не влияя на другие. По этим причинам они используются в большинстве графических редакторов. Слоистые модели также обеспечивают более эффективное пространственное сглаживание (антиалиазинг) сложных рисунков и предоставляют надежную модель для определенных техник, таких как скошенные соединения и правило нечетного-четного числа пересечений. Слоистые модели также используются для того, чтобы пользователь мог скрывать нежелательную информацию при просмотре или печати документа, например, дороги или железные дороги на карте, определенные технологические слои на схеме интегральной схемы или рукописные пометки в деловом письме. В модели на основе слоев целевое изображение создается путем "рисования" или "наложения" каждого слоя в порядке убывания глубины на виртуальном холсте. Концептуально, каждый слой сначала отрисовывается отдельно, создавая цифровое изображение с желаемым разрешением, которое затем пиксель за пикселем наносится на холст. Полностью прозрачные части слоя, конечно, отрисовывать не нужно. Отрисовка и нанесение могут выполняться параллельно, то есть каждый пиксель слоя может быть нанесен на холст сразу после его отрисовки. Слои, состоящие из сложных геометрических объектов (таких как текст или полилинии), могут быть разбиты на более простые элементы (символы или сегменты линий, соответственно), которые затем отрисовываются как отдельные слои в определенном порядке. Однако это решение может приводить к нежелательным артефактам сглаживания, когда два элемента перекрывают один и тот же пиксель. См. также Portable Document Format#Layers.
Программное обеспечение
Многие графические пользовательские интерфейсы (GUI), включая macOS, Microsoft Windows или X Window System, в основном основаны на 2D графических концепциях. Такое программное обеспечение обеспечивает визуальную среду для взаимодействия с компьютером и обычно включает в себя ту или иную форму менеджера окон, помогающего пользователю концептуально различать различные приложения. Пользовательский интерфейс в отдельных программных приложениях, как правило, также имеет 2D-характер, отчасти из-за того, что большинство распространенных устройств ввода, таких как мышь, ограничены двумя измерениями движения. 2D-графика очень важна в управляющих периферийных устройствах, таких как принтеры, плоттеры, станки для резки листовых материалов и т. п. Она также использовалась в большинстве ранних видеоигр и до сих пор применяется для карточных и настольных игр, таких как пасьянс, шахматы, маджонг и т. д. 2D графические редакторы или программы для рисования – это программное обеспечение прикладного уровня для создания изображений, диаграмм и иллюстраций путем непосредственной манипуляции (с помощью мыши, графического планшета или аналогичного устройства) 2D компьютерной графикой. Эти редакторы обычно предоставляют геометрические примитивы, а также цифровые изображения, а некоторые даже поддерживают процедурные модели. Иллюстрация обычно представляется внутри в виде сложной модели, часто с иерархической структурой для удобства редактирования. Эти редакторы обычно выводят графические файлы, в которых слои и примитивы сохраняются отдельно в исходном виде. MacDraw, представленный в 1984 году вместе с линейкой компьютеров Macintosh, был ранним примером этого класса; современные примеры – коммерческие продукты Adobe Illustrator и CorelDRAW, а также бесплатные редакторы, такие как xfig или Inkscape. Существует также множество 2D графических редакторов, специализирующихся на определенных типах рисунков, таких как электрические, электронные и VLSI схемы, топографические карты, компьютерные шрифты и т. д. Редакторы изображений специализируются на обработке цифровых изображений, главным образом с помощью рисования/живописи от руки и операций обработки сигналов. Они обычно используют парадигму прямого рисования, где пользователь управляет виртуальными ручками, кистями и другими художественными инструментами для нанесения краски на виртуальный холст. Некоторые редакторы изображений поддерживают многослойную модель; однако, для поддержки операций обработки сигналов, таких как размытие, каждый слой обычно представляется в виде цифрового изображения. Следовательно, любые геометрические примитивы, предоставляемые редактором, немедленно преобразуются в пиксели и наносятся на холст. Иногда используется термин «растровый графический редактор», чтобы противопоставить этот подход универсальным редакторам, которые также работают с векторной графикой. Одним из первых популярных редакторов изображений был MacPaint от Apple, дополнявший MacDraw. Современные примеры – бесплатный редактор GIMP и коммерческие продукты Photoshop и Paint Shop Pro. Этот класс также включает множество специализированных редакторов – для медицины, дистанционного зондирования, цифровой фотографии и т. д.