Компьютерная геометрия и графика

advertisement
Ответы к экзамену по курсу «Компьютерная геометрия и графика»
Что такое цифровое изображение (ЦИ)?
ЦИ – модель реального или синтезированного изображения, хранящаяся на машинном носителе в виде
совокупности цифровых кодов. Для Web в настоящее время используют в основном растровые модели
изображений.
Что такое пиксель?
Пиксель (англ. pixel – picture element – элемент картинки) – неделимый прямоугольный элемент
растровой модели, параметры которого описывают соответствующий ему участок реального или
синтезированного изображения.
1. Краткая история компьютерной графики. Виды устройств
отображения графической информации.
История развития компьютерной графики
1950 год – появляются компьютеры. Они используются для решения научных и производственных задач,
результатом которых были числовые данные.
К 60 – тым годам появление более мощных компьютеров, на которых появляется возможность обработки
графических данных в режиме символьной печати.
Затем появляются специальные устройства для вывода на бумагу, так называемые графопостроители, или
перьевые плоттеры. Для управления работой графопостроителей стали создавать спец. ПО. Следующий
важный шаг произошёл с появлением графических дисплеев. Графический дисплей формирует рисунок
из множества точек, выстроенных в ровные ряды или строки, образующие растр. Мониторы, работающие
по принципу построчного сканирования, называются растровыми. Плата компьютера, обеспечивающего
формирование видеосигнала и тем самым определяющая изображение называются видеоадаптером,
видеоплатой и т.д. Основные части видеоадаптера – видеопамять и дисплейный процессор. Выводимое
изображение формируется в видеопамяти. Дисплейный процессор читает содержимое видеопамяти и
управляет работой монитора. К видеопамяти имеет доступ 2 процессора – центральный и дисплейный.
Центральный записывает видеоинформацию, а дисплейный читает её и передаёт на монитор. В
видеопамяти хранится последовательность кодов, определяющих цвет каждой точки. Видеоадаптеры
могут работать в различных режимах: текстовом и графическом.
В текстовом режиме экран монитора условно разбивается на отдельные участки, т.е. знакоместа. Каждое
знакоместо может быть выведено 250 символами по таблице ASCII кодов.
В графическом режиме информация отображается в виде прямоугольной сетки точек, цвет каждой из
которых задаётся программой. Существенное различие имеется при заполнении видеопамяти в текстовом
и графическом режимах. В графическом режиме кол – во элементов видеопамяти соответствует
количеству точек на экране, в текстовом – количеству символов на экране. В текстовом режиме для
каждой позиции на экране запоминается код символа, который в нее выводится и атрибуты изображения
этого символа.
Первый компьютер JBM PC – 1981 году был оснащен видеоадаптером MDA. Видеосистема была
предназначена для работы только в текстовом режиме.
Через год появляются видеоадаптер Hercules, который поддерживал уже графический черно – белый
видеорежим, с размером 720×348 пикселей.
Следующим шагом был видеоадаптер CGA – 1983. Это была первая цветная модель для IBM PC. Он
позволил работать в цветном текстовом и графическом режимах.(320×200 – цветной, 640×200 – черно –
белый, в цветном может обрабатывать 4 цвета)
В 1984 году появился видеоадаптер EGA. У него был 16 – цветный режим, размером 640×350 пикселей
(он имеет недостаток – пиксели не квадратные). В 1987 появились адаптеры MCGA(Multicolor) и
VGA(Video) (256 – цветные видеорежимы). На VGA стало возможно черно – белое фото. Появляются
видеоадаптеры, обеспечивающие видеорежимы при 16 цветах – 800×600, 640×480, 1024×768 – Super
VGA.
1995год – Targa 24 – 16 000000 цветов, т.е. 24 бита / пиксель. Apple, Macintosh стали сдавать позиции.
На данный момент на компьютеры IBM PC с процессором Pentium используется огромное количество
видеокарт с глубиной цвета 32 бита / пиксель при размерах растра 1600×1200.
Параметры отображения обуславливаются не только моделями видеоадаптера, но и объемом
видеопамяти. Видеопамять хранит растровое изображение, которое полностью соответствует текущему
состоянию монитора. Необходимый объем видеопамяти вычисляется как периметр растра экрана на
количество бит на пиксель.
В видеопамяти могут хранится несколько кадров изображения. Это используется в анимации, для их
сохранения используются отдельные страницы видеопамяти с одинаковой логической организацией, но
разной адресацией.
Обмен данными по системной шине для видеосистемы обеспечивают процессор, видеоадаптер и
контроллер локальной шины. До недавнего времени использовалась шина PCI (эта шина является
стандартом для подключения модемов, сетевых контроллеров и т.д.) на 33МГц – 132МБайта / с.
В настоящее время используется шина AGP. Наличие AGP порта повышает быстродействие компьютера
(на 66МГц – скорость 528Мбайт / с). Кроме видеопамяти на плате видеоадаптера располагается
специальный мощный графический процессор, который по сложности приближается к центральному.
Кроме визуализации содержимого видеопамяти графический дисплейный процессор выполняет такие
растровые операции как рисование массивов пикселей, манипуляции с цветами пикселей, копирование,
наложение текстуры и т.д. Ранее эти функции выполнялись центральным процессором, а графически
использовались лишь для рисования линий и т.д.
Видеоадаптер выполняет эти операции аппаратно, что позволяет намного ускорить их в сравнении с
программной реализацией центрального процессора. Наиболее известными являются Open JL, Direct X .
Одним из наиболее распространенных является Open GL. Он является библиотекой графических функций
и поддерживается многими операционными системами, в том числе и Windows. Графический интерфейс
Direct X предназначен для работы под Windows, имеет подсистему 3 – х мерной графики Direct 3D и
подсистему Direct DRAW,который имеет доступ к видеопамяти.
2. Свет и цвет в компьютерной графике. Основные понятия и
характеристики.
Цвет объекта, который вы видите, зависит от частоты тех световых волн, что попадают в ваши глаза. Этот
набор, в свою очередь, зависит от двух факторов – от поглощаемых объектом частот, и от частоты
источника света. Если поверхность не поглощает никаких цветов, тогда все цвета отражаются, и вы
видите белый цвет. Если поверхность поглощает только лишь красный цвет, а зеленый и синий отражает,
то вы увидите голубой цвет, и так далее. Факторы, влияющие на внешний вид конкретного цвета:
* источник света
* информация об окружающих предметах
* ваши глаза
Способы образования цвета в природе:
* источники света (солнце, лампочка и т.д.) излучают свет различных длин волн спектра. Этот свет
воспринимается глазом как цветной.
* свет отражается и поглощается, попадая на поверхность несветящихся предметов. Отраженное
излучение воспринимается глазом как окраска предметов.
Ключевой момент здесь заключается в том, что для отражения волн какой – либо частоты (или для
пропускания волны через прозрачный фильтр – например, через цветное стекло) волны этой самой
частоты должны существовать, их должен вырабатывать источник света. Например, свет,
вырабатываемый обыкновенной лампой накаливания, содержит намного больше фотонов из желтого и
зеленого спектра, а не синего – именно поэтому свет лампы накаливания кажется нам желтоватым и
именно поэтому его называют теплым – в нем больше красного и зеленого, которые отражаются от
предметов и достигают глаз.
Цвет любого предмета частично зависит от условий освещения. Грубо говоря, вы можете не узнать своего
автомобиля на стоянке, освещенной натриевой лампой. Отметим, что для изменения ощущения цвета
вовсе не обязательно такое яркое освещение – цвет изменится и если просто перейти из комнаты,
освещенной лампой накаливания на уличный свет.
Рассмотрим несколько примеров, показывающих субъективности восприятия цвета. Известно, что белый
квадрат на черном фоне будет казаться более крупным, чем черный квадрат такой же величины на белом
фоне. Белый цвет излучается и выходит за свои пределы, в то время как черный ведет к сокращению
размеров занимаемых им плоскостей. Светло – серый квадрат кажется темным на белом фоне, но тот же
светло – серый квадрат на черном воспринимается светлым.
* На рисунке желтый квадрат дан на белом и на черном фоне. На белом фоне он кажется темнее,
производя впечатление легкого нежного тепла. На черном же становится чрезвычайно светлым и
приобретает холодный, агрессивный характер.
* Красный квадрат изображен на белом и на черном фоне. На белом красный цвет кажется очень темным
и его яркость едва заметна. Но на черном тот же красный излучает яркое тепло.
* Если синий квадрат изобразить на белом и черном фоне, то на белом он будет выглядеть темным,
глубоким цветом, а окружающий его белый станет даже более светлым, чем в случае с желтым квадратом.
* На черном же фоне синий цвет посветлеет и приобретет яркий, глубокий и светящийся тон.
Если серый квадрат изобразить на ледяном синем и на красно – оранжевом фоне, то на ледяном синем он
станет красноватым, в то время как в окружении красно – оранжевого – синеватым.
Разница становится весьма заметной, если эти композиции рассматривать одновременно. Когда цвет и
впечатление от него (его воздействие) не совпадают, цвет производит диссонирующее, подвижное,
нереальное и мимолетное впечатление. Вот несколько наглядных примеров.
Если бы цвет был свойством объекта, то вы бы воспринимали его каждый раз одинаково при любых
условиях освещенности. Но так как цвет на самом деле не является свойством объекта, а скорее является
именно ощущением, единственное, что вы можете сравнивать – это ощущения конкретного цвета,
вызванные вашей зрительной системой. Это ощущение изменится при изменении освещения, и для
разных объектов эти изменения будут различными. Поэтому сравнивать цвета следует при определенном
освещении.
Итак, изменение цвета после изменений условий освещенности объясняется различиями в источниках
света. Действительно, предметы выглядят днем несколько иначе, чем вечером. Отметим еще одну
особенность – в одних условиях освещения предметы могут казаться одинакового цвета, но стоит
изменить освещение, и предметы будут разноцветными. Такое явление получило название метамерии.
3. Зрительный аппарат человека. Основные характеристики.
Системы отображения графической информации воздействуют на зрительный аппарат человека, поэтому
с необходимостью должны учитывать как физические, так и психофизиологические особенности зрения.
Устройство глаза
На рис. 0.2.1 показан поперечный размер глазного яблока человека. Свет попадает в глаз через роговицу и
фокусируется хрусталиком на внутренний слой глаза, называемый сетчаткой. Сетчатка преобразует свет в
импульсы в нервных волокнах и состоит из трех слоев клеток. Удивительно то, что светочувствительные
клетки, известные как колбочки и палочки, формируют слой клеток в задней части сетчатки. Таким
образом, свет должен вначале пройти два слоя клеток, прежде чем он воздействует на колбочки и
палочки. Причины для такого обратного устройства сетчатки не полностью поняты, но одно из
объяснений состоит в том, что расположение светочувствительных клеток в задней части сетчатки
позволяет любому паразитному непоглощенному свету попасть на клетки находящиеся непосредственно
позади сетчатки, которые содержат черный пигмент – меланин. Клетки, содержащие меланин, также
помогают химически восстанавливать светочувствительный визуальный пигмент в колбочках и палочках
после того, как они были отбелены на свету.
Интересно отметить, что природа создала целый ряд конструкций глаза. При этом глаза у всех
позвоночных похожи на глаза человека, а глаза у беспозвоночных либо сложные (фасеточные) как у
насекомых, либо недоразвитые в виде световувствительного пятна. Только у осьминогов глаза устроены
как у позвоночных, но светочувствительные клетки находятся непосредственно на внутренней
поверхности глазного яблока, а не как у нас позади других слоев, занимающихся предварительной
обработкой изображения. Поэтому, возможно, особого смысла в обратном расположении клеток в
сетчатке нет. А это просто один из экспериментов природы.
Итак, внутренний слой сетчатки глаза содержит два типа светочувствительных рецепторов, занимающих
область с раствором около 170  относительно зрительной оси:
 100 млн. палочек (длинные и тонкие рецепторы ночного зрения),
 6.5 млн. колбочек (короткие и толстые рецепторы дневного зрения).
Рис. 0.2.1: Поперечный разрез глаза
Информация от рецепторов передается в мозг по зрительному нерву, содержащему около 800 тысяч
волокон.
Колбочки и палочки содержат зрительные пигменты. Зрительные пигменты очень похожи на любые
другие пигменты, в том, что они поглощают свет и степень поглощения зависит от длины волны. Важное
свойство зрительных пигментов состоит в том, что когда зрительный пигмент поглощает фотон света, то
изменяется форма молекулы и в то же самое время происходит переизлучение света. Пигмент при этом
изменился, измененная молекула поглощает свет менее хорошо чем прежде, т.е. как часто говорят,
"отбеливается". Изменение формы молекулы и переизлучение энергии некоторым, пока еще не вполне
ясным образом, инициируют светочувствительную клетку к выдаче сигнала.
Информация от светочувствительных рецепторов (колбочек и палочек) передается другим типам клеток,
которые соединены между собой. Специальные клетки передают информацию в зрительный нерв. Таким
образом волокно зрительного нерва обслуживает несколько светочувствительных рецепторов, т.е.
некоторая предварительная обработка изображения выполняется непосредственно в глазу, который по
сути представляет собой выдвинутую вперед часть мозга.
Область сетчатки, в которой волокна зрительного нерва собираются вместе и выходят из глаза, лишена
светочувствительных рецепторов и называется слепым пятном.
Радужная оболочка (см. рис. 0.2.1) действует как диафрагма, изменяя количество света, проходящего в
глаз. Диаметр зрачка меняется от ~ 2 мм (при ярком свете) до ~ 8 мм (при малой освещенности).
За сетчаткой находится сосудистая оболочка, которая содержит капилляры, снабжающие глаз кровью.
Наружняя оболочка глаза – склера, состоит их плотных волокон.
Чувствительность глаза
При ярком свете чувствительность палочек мала, но при низких уровнях освещенности их
чувствительность возрастает и обеспечивает нашу способность видеть при тусклом свете. Палочки
содержат пигмент с максимальной чувствительностью на длине волны около 510 нм (точечная линия на
рис. 0.2.2), в зеленой части спектра. Пигмент палочек часто называется зрительным пурпуром из – за его
цвета. Максимальная плотность палочек приходится на область с раствором около 20° относительно оси.
Рис. 0.2.2: Спектральная чувствительность глаза
Колбочек существует три типа отличающихся фоточувствительным пигментом. Колбочки обычно
называют "синими", "зелеными" и "красными" в соответствии с наименованием цвета, для которого они
оптимально чувствительны. Упомянутые три пигмента имеют максимальные поглощения приблизительно
на 430, 530 и 560 нм. Этим длинам волн соответствует не синий, зеленый и красный цвета, а фиолетовый,
сине – зеленый и желто – зеленый. Более логичным было бы использование терминологиии корото – ,
средне – , длинноволновые колбочки.
Максимальная плотность колбочек достигается в области с раствором порядка 8  6  относительно оси,
называемой желтым пятном. В центре этой области (ямке) к каждой колбочке подходит отдельное
волокно зрительного нерва. Это область максимальной остроты зрения.
Суммарная кривая спектральной чувствительности глаза для случая яркого освещения, т.е. цветного
зрения, показана на рис. 0.2.2 сплошной линией.
Из этих графиков видно почему "ночью все кошки серы". В самом деле, например, отклик на красный
цвет (l = 700 мкм) при низких уровнях освещения (точечная кривая на рис. 0.2.2) практически равен нулю.
Поэтому красный цвет ночью будет выглядеть черным.
В силу того, что коэффициент преломления в радужке и хрусталике растет с увеличением частоты света,
глаз не избавлен от хроматической аберрации. Т.е. если изображение сфокусировано для одной из частот,
то на других частотах изображение расфокуировано. Хрусталик оптимально фокусирует на сетчатке свет
с длиной волны около 560 нм. Так как пики чувствительности средне – длинноволновых колбочек (530 и
560 нм, соответственно) близки к друг к другу, поэтому изображения для этих колбочек могут быть
одновременно сфокусированными. Изображение же для коротковолновых палочек будет размытым. Так
степень фокусировки разная, то не требуется одинаковой разрешаютей способности глаза для разных
типов колбочек. В глазу человека на одну коротковолновую колбочку приходится 20 средне – и 40
длинноволновых. В этой связи понятно, почему ширина полосы пропускания для "холодных",
коротковолновых цветов в телевидении может быть выбрана существенно меньшей без субъективно
заметной потери верности воспроизведения.
4. Элементы колориметрии. Законы смешивания цветов.
Элементы колориметрии.
Колориметрия – наука об измерении и количественном выражении цвета. Колориметрией установлено
что монохроматическое излучение с определенной длинной волны всегда создает вполне определенное
ощущение цвета.
 = 580 нм – желтый цвет
 = 530 нм – Зеленый цвет
 = 700 нм – синий цвет
Однако если имеется источник желтого цвета, это еще не означает того, что его длинна волны 580 нм.
Существует много спектральных составов, которые могут вызывать ощущения одинакового цвета.
Одинаковые цвета созданные разными спектральными излучениями называются метамерными цветами.
Различают три способа смешивания цветов:
Локальный (Направляет свет от разных источников на белый экран, результирующий цвет зависит от
цвета и интенсивности источников)
Бинокулярный (На один глаз действует световой поток одного цвета, на второй глаз световой поток
другого цвета, в мозгу создается цветовое ощущение зависящее от смеси этих цветов. Основан на
слитном восприятии разноцветных точек, штрихов, полос. Угловые размеры которых меньше угла
размещения глаза.)
Пространственный
Законы смешивания цветов
Сформулировал Г Грассман 1853 г.
1. Любые 4 цвета находятся в линейной зависимости, хотя существует неограниченное число
комбинаций из трех цветов являющихся линейно не зависимыми.
Из этого следует, что существуют цвета линейно зависимые, которые могут быть связанные между собой
линейными алгебраическими уравнениями, и цвета линейно не зависимые.
Из 7 основных цветов 4 являются линейно зависимыми, а 3 могут и не находится в линейной
зависимости. Например:
Красный, Оранжевый, Желтый – линейно зависимые.
Красный, Синий, Зеленый – линейно не зависимые, т.к. смешивая два из них нельзя получить третий.
Для любого заданного цвета можно записать такое цветовое уравнение которое выражает линейную
зависимость цветов:
Ц = к1Ц1 + к2Ц2 + к3Ц3
Ц* – базисные линейно не зависимые цвета, к* – коэффициенты, указывающие на количество
смешиваемых цветов, Ц – результирующий цвет.
Это уравнение говорит и о трехмерности цвета.
2. Если в смеси трех цветовых компонент одна меняется непрерывно, а две других постоянны, то
цвет смеси так же непрерывно меняется.
3. Цвет смеси зависит только от цвета смешиваемых компонент и не зависит от способа их
получения.
5. Физические принципы формирования цветовых оттенков. Аддитивные
и субтрактивные цвета.
Существует два вида света:
Излучаемый свет – свет, который попадает в зрительный анализатор непосредственно от источника
(монитор, солнце, лампа). Может содержать все цвета, либо любую их комбинацию, или только один
цвет.
Отраженный свет – свет, отразившийся от поверхности объекта.
Таким образом, мы видим предметы, потому что одни излучают свет, а другие – отражают его.
Цвет может получаться как в процессе излучения, так и в процессе отражения.
В компьютерной графике существует два метода его описания: система аддитивных цветов и система
субтрактивных цветов.
Система аддитивных цветов работает с излучаемыми источниками, результирующий цвет получается
при сложении цветов компонент.
В системе аддитивных цветов в качестве основных приняты RGB цвета. Используется в мониторе.
1) Пурпурный = Красный + Синий;
2) Белый = Красный + Зеленый + Синий;
3) Желтый = Красный + Зеленый;
4) Голубой = Зеленый + Синий;
Субтрактивные – происходит обратный процесс: результирующий цвет получается вычитанием других
цветов из общего луча света, в такой системе белый цвет соответствует отсутствие всех цветов, а наличие
дает черный. Система субтракттивных цветов работает с отраженным светом.
В системе субтрактивных цветов выбраны CMY цвета. Используется в полиграфии.
5) Зеленый = Голубой + Желтый;
6) Черный = Голубой + Пурпурный + Желтый;
7) Синий = Голубой + Пурпурный;
8) Красный = Желтый + Пурпурный.
Цвета одной модели являются дополнительными к другой. Дополнительный цвет – цвет дополняющий
данный до белого.
Трудность получения черного цвета при печати на принтере привела к тому, что необходимо
использовать и черную краску (CMYK).
Субтрактивное формирование оттенков
На лист бумаги падает белый цвет, в результате видим только синий цвет
Голубой краской поглощается синяя составляющая, зеленая составляющая поглощается пурпурной
краской. А остающаяся часть отражается от белой бумаги.
Почему в CMYK четыре цвета, а в RGB три
Несмотря на то что чёрный цвет можно получать смешением в равной пропорции пурпурного, голубого и
жёлтого красителей, по ряду причин (чистота цвета, переувлажнение бумаги и др.) такой подход обычно
неудовлетворителен. Основные причины использования дополнительного чёрного пигмента таковы:
* На практике смешение реальных пурпурного, голубого и жёлтого цветов даёт скорее грязно –
коричневый или грязно – серый цвет; триадные краски не дают той глубины и насыщенности, которая
достигается использованием настоящего чёрного. Так как чистота и насыщенность чёрного цвета
чрезвычайно важна в печатном процессе, в печатный процесс был введён ещё один цвет.
* При выводе мелких чёрных деталей изображения или текста без использования чёрного пигмента
возрастает риск неприводки (недостаточно точное совпадение точек нанесения) пурпурного, голубого и
жёлтого цветов. Увеличение же точности печатающего аппарата требует неадекватных затрат.
* Смешение 100 % пурпурного, голубого и жёлтого пигментов в одной точке в случае струйной печати
существенно смачивает бумагу, деформирует её и увеличивает время просушки.
* Чёрный пигмент (в качестве которого, как правило, используется сажа) существенно дешевле остальных
трёх.
6. Цветовые модели: RGB, CMYK, HSV, HLS.
Цветовая модель RGB – модель является аппаратно ориентированной и используется в
воспроизводящих устройствах для аддитивного формирования цветовых оттенков. Модель можно
представить в виде куба помещенного в систему координат RGB.
Точке с координатами 000 соответствует черный цвет, а 111 соответствует белый цвет
Цветовая модель CMYK – аппаратно ориентированная модель, используемая в полиграфии для
субтрактивного формирования цветовых оттенков. Также можно представить кубом в трехмерной
системе координат.
Цвета модели являются дополнительными цветами к модели RGB.
Цвет в этих моделях определяется из трех координат.
Из одной модели можно перевести в другую с помощью уравнений:
Переход из CMYK в RGB
 R  1  C 
     
 G   1   M 
 B  1  Y 
     
Переход из RGB в CMYK
 C  1  R 
     
 M   1   G 
 Y  1  B 
     
Цветовая модель HSV
Ориентирована на человека и обеспечивает возможность явного задания цветовых оттенков.
Цветовой охват этой модели представляется перевернутой 6тигранной пирамидой вершина которой
располагается в точке 0.0.
Hue – цветовой тон;
Saturation – насыщенность;
Value – количество света (светлота).
Цветовая модель HLS
Ориентирована на человека и обеспечивает возможность явного задания цветовых оттенков.
Hue – цветовой тон;
Lightness – светлота;
Saturation – насыщенность.
Для описания монохромных ображений используется модель в которой цвет задается одним числом.
Каждый оттенок определяется яркостью.
Для серых изображений достаточно одного числа, что позволяет упростить его цветовую модель. Каждый
оттенок серого (градация) определяется яркостью.
Для преобразования цветного изображения используется следующее соотношение Y = 0.3R + 0.59G +
0.11B. Коэффициенты при RGB учитывают различную чувствительность зрения к различным цветам, и их
сумма равна 1.
7. Преобразование цветовых моделей.
Переход из CMYK в RGB
 R  1  C 
     
 G   1   M 
 B  1  Y 
     
Переход из RGB в CMYK
 C  1  R 
     
 M   1   G 
 Y  1  B 
     
RGB – > HSV
Считаем, что:
H  [0,360)
S ,V , R, G, B  0,1
Пусть MAX – максимальное значение из R, G и B, а MIN – минимальное из них.
H  0 , если MAX = MIN
G-B
H  60 
 0 , если MAX  R и G  B
MAX-MIN
G-B
H  60 
 360 , если MAX  R и G  B
MAX-MIN
B-R
H  60 
 120 , если MAX  G
MAX-MIN
R-G
H  60 
 240 , если MAX  B
MAX-MIN
0, если MAX  0,

S 
MIN
иначе1  MAX .
V  MAX
HSV – > RGB
H 
H i    mod 6
 60 
H H 
f 

60  60 
p  V 1  S 
q  V 1  fS 
t  V 1  1  f S 
если
R = V, G = t, B = p
если
R = q, G = V, B = p
если
R = p, G = V, B = t
если
R = p, G = q, B = V
если
R = t, G = p, B = V
если
R = V, G = p, B = q
В компьютерной графике компоненты S и V принято представлять целым числом от 0 до 255 (в окне
выбора цветов в Microsoft Windows – от 0 до 240) вместо вещественного от 0 до 1. При целочисленном
кодировании для каждого цвета в HSV есть соответствующий цвет в RGB. Однако обратное утверждение
не является верным: некоторые цвета в RGB нельзя выразить в HSV так, чтобы значение каждого
компонента было целым. Фактически, при таком кодировании доступна только
1
часть цветового
256
пространства RGB.
RGB – > HSL
H  0 , если MAX = MIN
G-B
H  60 
 0 , если MAX  R и G  B
MAX-MIN
G-B
H  60 
 360 , если MAX  R и G  B
MAX-MIN
B-R
H  60 
 120 , если MAX  G
MAX-MIN
R-G
H  60 
 240 , если MAX  B
MAX-MIN
S = 0, если L = 0 или MAX = MIN
S = 1, если L = 1
MAX  MIN MAX  MIN
1
S

, если 0  L 
MAX  MIN
2L
2
1
MAX  MIN
MAX  MIN
, если  L  1
S

2
2  MAX  MIN 
2  2L
1
L  MAX  MIN 
2
где:
R, G, B – значения цвета в цветовой модели RGB, значения в диапазоне [0; 1] (R – красный, G – зелёный,
B – синий).
MAX – максимум из трёх значений (R, G, B)
MIN – минимум из трёх значений (R, G, B)
H – тон [0; 360]
S – насыщенность [0; 1]
L – яркость [0; 1]
HSL – > RGB
Q  L  1.0  S  , если L  0.5
Q  L  S  L  S  , если L  0.5
P  2.0  L  Q
H
Hk 
360
(приведение к интервалу [0,1])
1
TR  H k 
3
TG  H k
1
TB  H k 
3
Если
Ti  0  Ti  Ti  1
Ti  1  Ti  Ti  1
i  P  Q  P  6.0  Ti  , если Ti 
i  Q , если
1
1
 Ti 
6
2
1
6


1
2
2

i  P   Q  P    Ti   6.0  , если  Ti 
2
3
3



i  P , в остальных случаях.
где i – R, G, B.
8. Растровая графика. Основные понятия и характеристики.
Растровое изображение – это файл данных или структура, представляющая собой сетку пикселей или
точек цветов (на практике прямоугольную) на компьютерном мониторе, бумаге и других отображающих
устройствах и материалах.
Важными характеристиками изображения являются:
* количество пикселей. Может указываться отдельно количество пикселей по ширине и высоте (1024*768,
640*480,...) или же, редко, общее количество пикселей (обычно измеряется в мегапикселях);
* количество используемых цветов (или глубина цвета);
* цветовое пространство RGB, CMYK, XYZ и др.
Растровую графику редактируют с помощью растровых графических редакторов. Создается растровая
графика фотоаппаратами, сканерами, непосредственно в растровом редакторе, также путем экспорта из
векторного редактора или в виде скриншотов.
Достоинства
* Растровая графика позволяет создать (воспроизвести) практически любой рисунок, вне зависимости от
сложности, в отличие, например, от векторной, где невозможно точно передать эффект перехода от
одного цвета к другому (в теории, конечно, возможно, но файл размером 1 МБ в формате BMP будет
иметь размер 200 МБ в векторном формате)[источник не указан 26 дней].
* Распространённость – растровая графика используется сейчас практически везде: от маленьких значков
до плакатов.
* Высокая скорость обработки сложных изображений, если не нужно масштабирование.
* Растровое представление изображения естественно для большинства устройств ввода / вывода
графической информации, таких как монитор, принтер, цифровой фотоаппарат, сканер и др.
Недостатки
* Большой размер файлов с простыми изображениями.
* Невозможность идеального масштабирования.
Из – за этих недостатков для хранения простых рисунков рекомендуют вместо даже сжатой растровой
графики использовать векторную графику.
Форматы
Растровые изображения обычно хранятся в сжатом виде. В зависимости от типа сжатия может быть
возможно или невозможно восстановить изображение в точности таким, каким оно было до сжатия
(сжатие без потерь или сжатие с потерями соответственно). Так же в графическом фаиле может храниться
дополнительная информация: об авторе файла, фотокамере и её настройках, количестве точек на дюйм
при печати и др.
Сжатие без потерь
Использует алгоритмы сжатия, основанные на уменьшении избыточности информации.
* BMP или Windows Bitmap – обычно используется без сжатия.
* GIF (Graphics Interchange Format) – устаревающий формат, поддерживающий не более 256 цветов
одновременно. Всё ещё популярен из?за поддержки анимации, которая отсутствует в чистом PNG, хотя
ПО начинает поддерживать APNG.
* PCX устаревший формат, позволявший хорошо сжимать простые рисованые изображения (при сжатии
группы подряд идущих пикселей одинакового цвета заменяются на запись о количестве таких пикселей и
их цвете).
* PNG (Portable Network Graphics)
* TIFF (Tagged Image File Format) поддерживает несколько алгоритмов сжатия, в том числе сжатие без
потерь (LZW, LZ77, ZIP).
Сжатие с потерями
Основано на отбрасывании части информации (как правило наименее воспринимаемой глазом).
* JPEG очень широко используемый формат изображений. Сжатие основано на усреднении цвета
соседних пикселей (информация о яркости при этом не усредняется) и отбрасывании высокочастотных
составляющих в пространственном спектре фрагмента изображения. При детальном рассмотрении сильно
сжатого изображения заметно размытие резких границ и характерный муар вблизи них.
9. Векторная графика. Основные понятия и характеристики.
Векторная графика – это использование геометрических примитивов, таких как точки, линии, сплайны и
многоугольники, для представления изображений в компьютерной графике. Термин используется в
противоположность к растровой графике, которая представляет изображения как матрицу пикселей
(точек).
Обзор
Современные компьютерные видеодисплеи отображают информацию в растровом формате. Для
отображения векторного формата на растровом используются преобразователи, программные или
аппаратные, встроенные в видеокарту.
Кроме этого, существует узкий класс устройств, ориентированных исключительно на отображение
векторных данных. К ним относятся мониторы с векторной развёрткой, графопостроители, а также
некоторые типы лазерных проекторов.
Термин «векторная графика» используется в основном в контексте двухмерной компьютерной графики.
Способ хранения изображения
Рассмотрим, к примеру, окружность радиуса r. Список информации, необходимой для полного описания
окружности, таков:
радиус r;
координаты центра окружности;
цвет и толщина контура (возможно прозрачный);
цвет заполнения (возможно прозрачный).
Преимущества этого способа описания графики над растровой графикой:
Минимальное количество информации передаётся намного меньшему размеру файла (размер не зависит
от величины объекта).
Соответственно, можно бесконечно увеличить, например, дугу окружности, и она останется гладкой. С
другой стороны, если кривая представлена в виде ломаной линии, увеличение покажет, что она на самом
деле не кривая.
При увеличении или уменьшении объектов толщина линий может быть постоянной.
Параметры объектов хранятся и могут быть изменены. Это означает, что перемещение, масштабирование,
вращение, заполнение и т. д. не ухудшат качества рисунка. Более того, обычно указывают размеры в
аппаратно – независимых единицах (англ. device – independent unit), которые ведут к наилучшей
возможной растеризации на растровых устройствах.
У векторной графики есть два фундаментальных недостатка.
Не каждый объект может быть легко изображен в векторном виде. Кроме того, количество памяти и
времени на отображение зависит от числа объектов и их сложности.
Перевод векторной графики в растр достаточно прост. Но обратного пути, как правило, нет – трассировка
растра обычно не обеспечивает высокого качества векторного рисунка.
10. Фрактальная графика. Основные понятия.
Базовой основой фрактальной графики является математическое уравнение. Изображения строятся по
принципу наследования геометрических свойств, этот процесс называется фрактальная геометрия.
Фракталом (на латыни fractus, что означает “состоящий из объектов”) называется структура, которая
состоит из самоподобных частей. Проще говоря, любая часть фрактала содержит информацию обо всем
фрактале, увеличение или уменьшение любой части повлечет за собой строго определенные изменения
всей структуры. Структура фрактального изображения во многом напоминает связь атомов в кристалле.
Возможности фрактальной графики выходят далеко за пределы симметрии и асимметрии, она позволяет
создавать абстрактные изображения, выделяется целая область фрактальной анимации и даже
фрактальной музыки.
С точки зрения компьютерной живописи, фрактальная графика незаменима для создания, ландшафтов,
изображений различных поверхностей (водной глади, облаков, горных массивов). Одно из главных
отличий фрактальных редакторов, таких как Painter от Adobe Photoshop, 3D max и прочих программ,
заключается в том, что Вы сами создаете формулу, уравнение и контролируете процесс построения
изображения на всех стадиях. Сегодня фрактальная графика стаёт все больше популярной как среди
любителей просто порисовать, так и среди профессионалов, которые заняты в различных индустриях.
11. Кодирование цвета. Палитра.
Для того чтобы компьютер имел возможность работать с цветными изображениями, необходимо
представлять цвета в виде чисел – кодировать цвет. Способ кодирования зависит от цветовой модели и
формата числовых данных в компьютере.
Для модели RGB каждая из компонент может представляться числами, ограниченными некоторым
диапазоном – например, дробными числами от 0 до 1 либо целыми числами от 0 до некоторого
максимального значения. В настоящее время достаточно распространенным является формат True Color, в
котором каждая компонента представлена в виде байта, что дает 256 градаций для каждой компоненты: R
= 0...255, G = 0...255, В = 0...255. Количество цветов составляет 256x256x256 = 16.7 млн (224).
Такой способ кодирования цветов можно назвать компонентным. В компьютере коды изображений True
Color представляются в виде троек байтов, либо упаковываются в длинное целое (четырехбитное) – 32
бита (так, например, сделано в API Windows):
С = 00000000 bbbbbbbb gggggggg rrrrrrrr.
При работе с изображениями в системах компьютерной графики часто приходится искать компромисс
между качеством изображения (требуется как можно больше цветов) и ресурсами, необходимыми для
хранения и воспроизведения изображения, исчисляемыми, например, объемом памяти (надо уменьшать
количество бит на пиксел).
Кроме того, некоторое изображение само по себе может использовать ограниченное количество цветов.
Например, для черчения может быть достаточно двух цветов, для человеческого лица важны оттенки
розового, желтого, пурпурного, красного, зеленого; а для неба – оттенки голубого и серого. В этих
случаях использование полноцветного кодирования цвета является избыточным.
При ограничении количества цветов используют палитру, представляющую набор цветов, важных для
данного изображения. Палитру можно воспринимать как таблицу цветов. Палитра устанавливает
взаимосвязь между кодом цвета и его компонентами в выбранной цветовой модели.
В качестве примера дадим стандартную палитру дисплейных 16 – цветных видеорежимов EGA, VGA
(табл. 1.3).
Недостатком такой палитры можно считать отсутствие одного из важных цветов – оранжевого.
Существуют также иные стандартные палитры, например, 256 – цветная для VGA. Компьютерные
видеосистемы обычно предоставляют возможность программисту установить собственную палитру.
Каждый цвет изображения, использующего палитру, кодируется индексом, который будет определять
номер строки в таблице палитры. Поэтому такой способ кодирования цвета называют индексным.
12. Формат файлов для хранения растровых изображений
К настоящему времени известно много форматов файлов для растровых изображений. Здесь мы
рассмотрим один из самых популярных форматов, который обязан своей распространенностью
операционной системе Windows – формат BMP.
Общая структура BMP – файла такова:
Заголовок файла BMP называется BITMAPFILEHEADER. В нем помещается общее описание файла.
Заголовок имеет следующие поля:
WORD bfГуре – хранит символы "ВМ". Это код формата.
DWORD bfSize – общий размер файла в байтах.
WORD bfReserved1 – зарезервировано, пока что равно 0.
WORD bfReservcd2 – зарезервировано, пока что равно 0.
DWORD bfOffBits – адрес битового массива в данном файле.
Далее в файле следует еще один заголовок – BITMAPINFOHEADER, в котором хранится описание
размеров растра и цветового формата пикселов. Здесь имеются такие поля:
DWORD biSize – размер заголовка, равен 40.
LONG biWidth – ширина растра в пикселах.
LONG biHeight – высота растра в пикселах.
WORD biPlanes – должно быть равно 1.
WORD biBitCount – бит на пиксел, может быть 1, 4, 8, 16, 24 или 32.
DWORD biCompression – равно нулю.
DWORD biSizelmage – размер в байтах битового массива растра.
LONG biXPelsPerMeter – разрешение по X в пикселах на метр.
LONG biYPelsPerMeter – разрешение по Y в пикселах на метр.
DWORD biClrUsed – если равно 0, то используется макс, число цветов.
DWORD biCIrlmportant – равно 0, если biClrUsed = 0.
Затем в файле помещается палитра в виде записей RGBQUAD. Каждая запись содержит четыре поля.
BYTE rgbBlue – цветовая компонента В, от 0 до 255.
BYTE rgbGreen – компонента G.
BYTE rgbRed – компонента R.
BYTE rgbReserved – не используется, равно 0.
Количество записей RGBQUAD равно количеству используемых цветов. Палитра отсутствует, если число
бит на пиксел равно 24. Также палитра не нужна и для некоторых цветовых форматов 16 и 32 бит на
пиксел.
Здесь приняты такие обозначения для типов полей:
BYTE – однобайтовое целое число без знака.
WORD – r двухбайтовое целое число без знака.
DWORD – четырехбайтовое целое число без знака. LONG – четырехбайтовое целое число со знаком.
После палитры (если она есть) в файле BMP записывается растр в виде битового (а точнее, байтового
массива). В битовом массиве последовательно записываются байты строк растра. Количество байт в
строке должно быть кратно четырем, поэтому если количество пикселов по горизонтали не соответствует
такому условию, то справа в каждую строку дописывается некоторое число битов (выравнивание строк на
границу двойного слова).
Сжатие изображений в файлах BMP отсутствует, однако подобный формат (Device Independent Bitmap)
описания растровых изображений также используется и для файлов типа DIB, где применяются
простейшие алгоритмы сжатия RLE (Run Length Encoding) [61]. Алгоритмы RLE также используются и в
других популярных растровых графических форматах, например PCX.
Описание других графических форматов можно найти в литературных источниках, например [2], а также
в сети Internet.
13. Устранение ступенчатого эффекта в растровых изображениях
Устранение ступенчатого эффекта – антиалиасинг (antialiasing).
В растровых изображениях с невысокой разрешающей способностью при создании реалистичных
изображений достаточно серьёзной является проблема ступенчатого эффекта (aliasing).
Представим растр в виде плотно прижатых друг к другу квадратных ячеек – пикселей, каждая из которых
имеет площадь S. Для того, чтобы растровое изображение линии выглядело более гладким, можно цвет
угловых пикселей заменить на некоторый оттенок, промежуточный между цветом объекта и цветом фона.
Будем вычислять цвет пропорционально части площади ячейки растра Sx, покрываемой идеальным
контуром объекта. Формула для расчёта цвета такова:
Здесь C – одна из компонент цвета линии, Cf – аналогичная компонента цвета фона. На рисунке показано
увеличенное растровое изображение толстой прямой линии с включенным эффектом антиалиасинга, на
которое для сравнения наложен идеальный контур исходной линии. Формула применяется ко всем трём
компонентам цвета, например, в палитре RGB.
14. Дизеринг в растровых изображениях
Эмуляция оттенков цвета – дизеринг (dithering)
Если графическое устройство не способно воссоздавать достаточное количество цветов, тогда используют
растрирование – независимо от того, растровое это устройство или нет (как например в полиграфии).
Известно, что если смотреть на разноцветные точки с размерами меньше разрешающей способности
глаза, то их цвет воспринимается как усреднённый цвет пикселя, создаваемого этими точками
(телевидение).
Обычно для дизеринга используют квадратные ячейки размером 2х2 (5 градаций цвета для двухцветного
изображения), 3х3 (10 градаций, см.рис.) и 5х5 (25 градаций). Для ячейки с размерами n x n можно
получить n^2 + 1 различных градаций.
Расчёт цвета, соответствующего одной из комбинаций пикселей в ячейке площадью S, имеющих только
цвета C1 и С2, проводится так:
где S1 и S2 – части площади, занятые пикселями цветов C1 и C2 соответственно. Если ячейку представить
в виде плотно прижатых квадратных пикселей, то от площадей легко перейдём к количеству пикселей
соответствующего цвета в ячейке:
где m1 + m2 = n2. Можно считать, что ячейки размером n x n образовывают растр с разрешающей
способностью в n раз меньшей, чем у исходного растра, а глубина цвета возрастает пропорционально n2.
В случае вышеприведенного растра на изображении видна достаточно чёткая «квадратная» структура.
Для улучшения восприятия можно использовать диагональное расположение ячеек, сдвигая чётные
строки ячеек или записывая структуру в квадратные ячейки по примеру рис. III.4.
Однако при регулярном расположении одинаковых ячеек образуются паразитные текстуры, муар, лишние
контуры. Поэтому наряду с ячейками с фиксированным рисунком используются методы частотно –
модулированного дизеринга (равномерное псевдослучайное распределение пикселей по ячейке) и
диффузного дизеринга (распределение в каждой ячейке создаётся случайным образом).
15. Базовая графика. Аффинные преобразования на плоскости
Базовая графика.
Вывод изображения на экран дисплея и разнообразные действия с ним, в том числе и визуальный анализ,
требуют от пользователя известной геометрической грамотности. Геометрические понятия, формулы и
факты, относящиеся, прежде всего, к плоскому и трехмерному случаям, играют в задачах компьютерной
графики особую роль.
Геометрические фигуры представлены в памяти ЭВМ числовыми моделями, содержащими параметры
формы и параметры положения фигуры, а также геометрические условия формирования фигуры.
В начертательной геометрии рассматриваются способы описания фигур с помощью параметров.
Минимальное количество параметров, необходимых для описания фигуры, называется ее
параметрическим числом.
Точка задается двумя параметрами на плоскости и тремя в пространстве. Прямая задается двумя
параметрами на плоскости и четырьмя в пространстве.
Плоскость тремя параметрами. Точки, прямые и плоскости описываются параметрами положения.
Отрезок прямой на плоскости задается четырьмя и в пространстве шестью параметрами, из которых один
(длина отрезка) является параметром формы. Окружность задается тремя параметрами, из которых один
(радиус окружности) является параметром формы.
Числовые модели фигур могут быть заданы аналитически в виде неявного уравнения либо
параметрически в виде параметрического уравнения. Например, в случае окружности параметрами
положения являются координаты хс ус ее центра, параметром формы величина R радиус. С помощью
этих параметров может быть написано неявное уравнение окружности:
x  xc 2   y  yc 2  0
Та же окружность может быть задана параметрическим уравнением, где добавлен еще один переменный
параметр центральный угол а, определяющий положение точки на окружности:
x  xc  R cos  ;
y  yc  R sin  .
С помощью последних уравнений можно воспроизвести процесс построения отдельных точек
окружности, определяя ее как множество точек.
В начертательной геометрии есть понятие определителя фигуры, который состоит из частей: постоянной
(в случае окружности это, например, xc, yc, R ) и переменной. Первая геометрическая, вторая
алгоритмическая части определителя. Легко видеть, что алгоритмическая часть определителя задает
алгоритм воспроизводства всего множества точек, принадлежащих фигуре, которая имеет данную
геометрическую часть определителя. Все эти понятия являются фундаментальными для компьютерной
графики.
Аффинные преобразования на плоскости
Аффинное преобразование это такое преобразование, которое сохраняет параллельность линий, но не
обязательно углы или длины.
В компьютерной графике все, что относится к двумерному случаю, принято обозначать символом 2D (2 –
dimension). Допустим, на плоскости введена прямолинейная координатная система. Тогда каждой точке М
ставится в соответствие упорядоченная пара чисел (х, у) ее координат.
Вводя на плоскости еще одну прямолинейную систему координат, мы ставим в соответствие той же точке
М другую пару чисел (х*, у*). Переход от одной прямолинейной координатной системы на плоскости к
другой описывается следующими соотношениями:
x*  x  y   ,
y*  x  y   .
Где  ,  ,  ,  ,  ,  – произвольные числа.
Указанные выше формулы можно рассматривать двояко: либо сохраняется точка и изменяется
координатная система в этом случае произвольная точка М остается той же, изменяются лишь ее
координаты (х, у) (х*, у*) , либо изменяется точка и сохраняется координатная система в этом случае
формулы задают отображение, переводящее произвольную точку М(х, у) в точку М*(х*, у*), координаты
которой определены в той же координатной системе. В дальнейшем будем интерпретировать формулы,
как правило, что в заданной системе прямолинейных координат преобразуются точки плоскости.
В аффинных преобразованиях плоскости особую роль играют несколько важных частных случаев,
имеющих хорошо прослеживаемые геометрические характеристики. При исследовании геометрического
смысла числовых коэффициентов в формулах для этих случаев удобно считать, что заданная система
координат является прямоугольной декартовой.
Наиболее часто применяются следующие приемы компьютерной графики: перенос, масштабирование,
поворот, отражение. Алгебраические выражения и рисунки, поясняющие данные преобразования сведем в
табл.1.
Аффинные преобразования на плоскости
Тип преобразования
Геометрическая интерпретация
Алгебраическое описание
Матричное представление
Перенос (translation)
x*  x   ,
y*    
 1 0 0
T    0 1 0
  1
Масштабирование (растяжение) (dilatation)
x*  x,
y*  y
 0 0
D   0  0
 0 0 1
Поворот (вращение) (rotation)
x*  x cos   y sin  ,
y*  x sin   y cos 
 cos  sin  0
R   sin  cos  0
 0
0
1
Отражение (reflection)
x*  x,
y*   y
1 0 0
M   0  1 0
0 0 1
Под переносом понимается смещение примитивов вывода на один и тот же вектор.
Масштабирование это увеличение или уменьшение всего изображения либо его части. При
масштабировании координаты точек изображения умножаются на некоторое число.
Под поворотом понимается вращение примитивов вывода вокруг заданной оси. ( В плоскости чертежа
вращение происходит вокруг точки.)
Под отражением понимают получение зеркального отображения изображения относительно одной из
осей (например X).
Выбор этих четырех частных случаев определяется двумя обстоятельствами:
1. Каждое из приведенных выше преобразований имеет простой и наглядный геометрический смысл
(геометрическим смыслом наделены и постоянные числа, входящие в приведенные формулы).
2. Как доказывается в курсе аналитической геометрии, любое преобразование вида (*) всегда можно
представить как последовательное исполнение (суперпозицию) простейших преобразований вида А, Б, В
и Г (или части этих преобразований).
Таким образом, справедливо следующее важное свойство аффинных преобразований плоскости: любое
отображение вида (*) можно описать при помощи отображений, задаваемых формулами А, Б, В и Г.
Для эффективного использования этих известных формул в задачах компьютерной графики более
удобной является их матричная запись.
Для объединения этих преобразований вводят однородные координаты. Однородными координатами
точки называется любая тройка одновременно не равных нулю чисел x1 , x2 , x3 , связанных с заданными
числами x и y следующими соотношениями:
x1
x
 x, 2  y.
x3
x3
Тогда точка M(х, у) записывается как M(hX, hY, h), где h 0 является масштабным множителем.
Двумерные декартовы координаты могут быть найдены как
X
Y
x ,y .
h
h
В проективной геометрии эти координаты вводятся для устранения неопределенностей, возникающих при
задании бесконечноудаленных (несобственных) элементов. Однородные координаты можно
интерпретировать как вложение промасштабированной с коэффициентом h плоскости в плоскость Z = h в
трехмерном пространстве.
Точки в однородных координатах записываются трехэлементными вектор – строками. Матрицы
преобразования должны иметь размер 3х3.
При помощи троек однородных координат и матриц третьего порядка можно описать любое аффинное
преобразование плоскости.
В самом деле, считая h = 1, сравним две записи: помеченную символом (*) и нижеследующую,
матричную:
  0
x * y * 1  x y 1   0
   1
Теперь можно использовать композиции преобразований, применяя одно результирующее вместо ряда
преобразований, следующих друг за другом. Можно, например, сложную задачу разбить на ряд простых.
Поворот точки А около произвольной точки В можно разбить на три задачи:
перенос, при котором В = 0 (где 0 – начало координат);
поворот;
обратный перенос, при котором точка В возвращается на место и т. д.
Композиция наиболее общего вида из операций Т, D, R, M имеет матрицу:
 a11 a12 0
K   a21 a22 0 .
 tx
t y 1

Верхняя часть размером 2х2 – объединенная матрица поворота и масштабирования, a tx и ty описывают
суммарный перенос.
К изложенным фундаментальным преобразованиям сводятся следующие:
прокручивание перемещение окна на поверхности визуализации (если перемещение ограничено только
направлениями вверх и вниз, то оно называется вертикальным прокручиванием);
трансфокация постепенное изменение масштаба изображения;
кувыркание динамическое изображение примитивов вывода, вращающихся вокруг некоторой оси,
ориентация которой непрерывно изменяется в пространстве;
панорамирование постепенный перенос изображения с целью создания зрительного ощущения
движения.
16. Пространственная графика и преобразования в пространстве
Обратимся теперь к трехмерное случаю (3D) (3 – dimension) и начнем рассмотрение сразу с введения
однородных координат.
Поступая аналогично тому, как это было сделано в размерности два, заменим координатную тройку (х, у,
z), задающую точку в пространстве, на четверку чисел (х у z1) или, в более общем виде, на четверку
(hx hy hz h), h0.
Каждая точка пространства (кроме начальной точки О) может быть задана четверкой одновременно не
равных нулю чисел; эта четверка чисел определена однозначно с точностью до общего множителя.
Предложенный переход к новому способу задания точек дает возможность воспользоваться матричной
записью и в более сложных, трехмерных задачах.
Любое аффинное преобразование в трехмерном пространстве может быть представлено в виде
суперпозиции вращений, растяжений, отражений и переносов. Поэтому имеет смысл подробно
рассмотреть матрицы именно этих преобразований (очевидно, что в данном случае порядок матриц
должен быть равен четырем).
А. Матрица переноса (здесь  ,  ,  – вектор переноса):
 1 0 0 0
 0 1 0 0

T   
 0 0 1 0


   1 
Б. Матрица растяжения (сжатия):
 0 0 0
 0  0 0

D  
 0 0  0


 0 0 0 1
Где
  0 – коэффициент растяжения (сжатия) вдоль оси абсцисс;
  0 – коэффициент растяжения (сжатия) вдоль оси ординат;
  0 – коэффициент растяжения (сжатия) вдоль оси аппликат;
В. Матрицы вращения в пространстве
Матрицы вращения вокруг оси абсцисс, ординат и аппликат соответственно будут иметь вид:
0
0
0
1
0 cos  sin  0

Rx   
0  sin  cos  0


0
0
1
0
cos  0  sin  0
 0
1
0
0

Ry 
 sin  0 cos  0


0
0
1
 0
 cos  sin  0 0
 sin  cos  0 0

Ry  
 0
0
1 0


0
0 1
 0
Полезно обратить внимание на место знака " – " в каждой из трех приведенных матриц.
Г. Матрицы отражения относительно плоскостей хy, уz, zx, соответственно:
 a11 a12 a13 0
a
a22 a23 0
21

K   
a31 a32 a33 0


t z 1
 t x t y
Как и в двумерном случае, все описанные матрицы невырождены.
Таким образом, результирующая матрица преобразований в пространстве будет иметь вид: К
Очевидно, что для изменения положения некоторого тела в пространстве необходимо выполнить
преобразование координат для каждой его точки.
 
 
17. Геометрические сплайны
Для описания сложных поверхностей часто используют сплайны. Сплайн – это специальная функция для
аппроксимации отдельных фрагментов поверхности. Несколько сплайнов образуют модель сложной
поверхности. Иными словами, сплайн – это тоже поверхность, но такая, для которой можно достаточно
просто вычислять координаты ее точек. В трехмерной графике обычно используют кубические сплайны
по двум основным причинам:
– третья степень – наименьшая из степеней, позволяющих описывать любую форму;
– при стыковке сплайнов можно обеспечить непрерывную первую производную – такая поверхность
будет без изломов в местах стыка.
Сплайны, как правило, задают параметрически.
18. Связь преобразований объекта с преобразованиями координат
Когда пользователь графической системы видит на экране перемещающийся объект, то, как вы считаете,
что на самом деле происходит – перемещаются объекты или система координат в обратном направлении?
Например, если в кино вы видите объекты, вращающиеся на экране по часовой стрелке, то может в
действительности это камера поворачивается против часовой стрелки?
Преобразование объектов и преобразование систем координат тесно связаны между собой. Движение
объектов можно рассматривать как движение в обратном направлении соответствующей системы
координат.
Такая относительность для объектов отображения и систем координат дает разработчикам компьютерных
систем дополнительные возможности для моделирования и визуализации пространственных объектов. С
каждым объектом можно связывать как собственную локальную систему координат, так и единую для
нескольких объектов. Это можно использовать, например, для моделирования подвижных объектов.
Обычно, того же самого эффекта можно добиться, если использовать различные подходы. Однако в одних
случаях удобнее использовать преобразование координат, а в других – преобразование объектов. Не
последнюю роль играет сложность обоснования какого – то способа, его понятность.
Рассмотрим пример комбинированного подхода. Пусть нам нужно получить функцию расчета координат
(X, Y) для поворота вокруг центра с координатами (Xo, Yo) (рис. 2.13).
Рис. 2.13. Вращение вокруг произвольного центра
Выше мы рассмотрели поворот относительно центра координат (0, 0). Для решения нашей задачи введем
новую систему координат ( xOy  ) с центром в точке ( x0 , y 0 ):
 x  x  x0 ,

 y   y  y0 .
Для такой системы поворот точек происходит вокруг ее центра:
 X   x cos   y sin  ,

Y   x sin   y cos  .
Преобразуем координаты (X’,Y’) в (X,Y) сдвигом системы координат в точку (0,0).
 X  X   x0 ,

Y  Y   y0 .
Если объединить формулы преобразований, то получим результат:
 X  x  x0  cos    y  y0 sin   x0 ,

Y  x  x0 sin    y  y0  cos   y0 .
Решение этой задачи можно было бы осуществить и в матричной форме:
 X   Сдвиг системы   Поворот   Сдвиг системы   x 
  


 
 Y  =  координат на   на угол   координат на   y  =

 1
1 

 x0 ,  y0
x0 ,y0


 
  

 1 0 x0   cos   sin  0   1 0  x0   x   cos   sin   x0 cos   y0 sin   x0 



  

 0 1 y0   sin  cos  0   0 1  y0   y  =  sin  cos   x0 sin   y0 cos   x0  .

0 0 1   0
0
1   0 0 1   1   0
0
1



Рассмотрим второй пример. Нашей задачей будет вывод формул параметрического описания поверхности
тора. Изобразим тор следующим образом (рис. 2.14).
Для произвольной точки Р, лежащей на поверхности тора, требуется выразить координаты (х, у, z) через
константы, описывающие размеры фигуры, а также через некоторые параметры. Для поверхности в
трехмерном пространстве необходимо использовать два параметра. В качестве таковых выберем угловые
величины:  (широта) и  (долгота).
Непосредственное определение координат точки Р представляется сложным, поэтому искомые
координаты будем искать несколькими шагами преобразований. Рассмотрим окружность, лежащую в
плоскости zOy, центр этой окружности совпадает с центром координат. Координаты точки Р" с широтой
<р составляют
x  0,
y  r cos  ,
z   r sin  .
где r – малый радиус тора.
Теперь перенесем окружность на расстояние R (большой радиус тора) по оси y в той же плоскости zOy.
Получим точку P’. Ее координаты:
x  x  0,
y  R  y  R  r cos  ,
z   z   r sin  .
Окружность, которой принадлежит точка Р', является геометрическим местом точек тора с нулевой
долготой (о. Если точку Р' повернуть на угол to, то получим искомую точку Р поверхности тора с
координатами:
x  x cos   y sin  ,
y   x sin   y cos  ,
z  z.
Подставляя значения x’,y’,z’ получим искомые формулы:
x  R  r cos  sin  ,
y  R  r cos   cos  ,
z  r sin .
19. Проекции. Мировые и экранные координаты
В настоящее время наиболее распространены устройства отображения, которые синтезируют
изображения на плоскости – экране дисплея или бумаге. Устройства, которые создают истинно объемные
изображения, пока достаточно редки. Но все чаще появляются сведения о таких разработках, например,
об объемных дисплеях или даже о трехмерных принтерах.
При использовании любых графических устройств обычно используют проекции. Проекция задает способ
отображения объектов на графическом устройстве. Мы будем рассматривать только проекции на
плоскость.
Мировые и экранные координаты
При отображении пространственных объектов на экране или на листе бумаги с помощью принтера
необходимо знать координаты объектов. Мы рассмотрим две системы координат. Первая – мировые
координаты, которые описывают истинное положение объектов в пространстве с заданной точностью.
Другая – система координат устройства изображения, в котором осуществляется вывод изображения
объектов в заданной проекции.
Пусть мировые координаты будут трехмерными декартовыми координатами. Где должен размещаться
центр координат и какими будут единицы измерения вдоль каждой оси, пока для нас не очень важно.
Важно то, что для отображения мы будем знать какие – то числовые значения координат отображаемых
объектов.
Для получения изображения в определенной проекции необходимо рассчитать координаты проекции. Из
них можно получить координаты для графического устройства – назовем их экранными координатами.
Для синтеза изображения на плоскости достаточно двумерной системы координат. Однако в некоторых
алгоритмах визуализации используются трехмерные экранные координаты, например, в алгоритме Z –
буфера.
20. Основные типы проекций: аксонометрическая, перспективная
В компьютерной графике наиболее распространены параллельная (аксонометрическая) и центральная
(перспективная) проекции:
Для центральной проекции лучи проецирования исходят из одной точки, размещенной на конечном
расстоянии от объектов и плоскости проецирования. Для параллельной проекции лучи проецирования
параллельны.
Плоскость аксонометрической проекции располагается перпендикулярно всей совокупности
проекционных лучей, а плоскость центральной проекции перпендикулярно только одному,
центральному лучу, соответствующему линии визирования сцены.
При аксонометрической проекции не происходит искажения горизонтальных и вертикальных размеров,
но искажаются размеры, характеризующие «глубину» объекта.
При центральной проекции оказываются искаженными все размеры объекта.
Примером перспективной проекции может служить любая фотография, сделанная обычным
фотоаппаратом.
Частным случаем аксонометрических проекций являются проекции ортографические, при построении
которых плоскость проекции выравнивается параллельно одной из координатных плоскостей
трехмерного пространства, в котором размещена сцена.
К ортографическим проекциям относятся знакомые вам по школьному курсу черчения «вид сверху»,
«вид слева» и т. п.
Перспективная проекция окружающего мира привычна и естественна для наших глаз, так как в жизни мы
все предметы видим в перспективе. При такой проекции, чем дальше объект расположен от глаз
наблюдателя, тем меньше он кажется по размерам. При параллельной проекции размеры объектов на
изображении не зависят от их удаления от глаз наблюдателя. Это непривычно, но очень удобно: можно
точно сопоставлять размеры объектов, на каких бы расстояниях они ни находились.
Перспективное (центральное) проецирование.
Рассмотрим ситуацию. Картинная плоскость перпендикулярна оси Z и совпадает с плоскостью Z = d,
центр проекции находится в начале координат (х – вправо, y – вверх, т.е. левосторонняя система
координат).
xp / d = x / z; yp / d = y / z; xp = xd / z; yp = yd / z,
где d – масштабный множитель, z – любой, кроме z = 0
Плоскость z = 0 – картинная. Центр проекции располагается в точке z = – d. Аналогичные треугольники,
что и в 1 случае.
xp = dx / (z + d) = x / (z / d + 1); yp = dy / (z + d) = y / (z / d + 1);
Исходя из 1 случая, можно получит матрицу для 2 случая.
Линии, которые были параллельны оси Z будут проходить через конечную точку – это точка схода. Точка
схода находится на той же оси, что и центр проекции в точке с координатами z = d. При некоторых
расположениях объекта линии, параллельные оси y и оси х также будут пересекаться. Точки пересечения
будут лежать выше или ниже горизонта – это точки следа. Если имеется несколько точек схода, то
перспективный проект называется многоточечным. Было бы ошибочным применять матрицу 2 – х и 3 – х
точечной проекции в случае, если взаимное расположение центра проекции и проекционной плоскости,
которая описана в этом разделе. Если перед центральным проецированием выполнить 1 или 2 поворота и
перенос объекта, то результирующая матрица, полученная в результате аффинного преобразования и
перспективной проекции будет соответствовать матрице 2 – х и 3 – х точечной проекции. Такая матрица
имеет соответственно 2 или 3 ненулевых элемента в 1 – х и 3 – х строках и последнем столбце.
21. Отображение графической информации в окне
Введем обозначения. Пусть ( X Э ,YЭ ,Z Э ) – это экранные координаты объектов в графическом устройстве
отображения. Заметим, что не следует воспринимать слово "экранные" так, будто речь идет только о
дисплеях – все нижеследующее можно отнести и к любым другим устройствам, использующим декартову
систему координат. Координаты проецирования обозначим здесь как ( X,Y,Z ).
Назовем окном прямоугольную область вывода с экранными координатами  X Э min YЭ min    X Э max YЭ max  .
Обычно приходится отображать в окне или всю сцену, или отдельную ее часть.
Отображение проекции сцены:
Границы сцены в координатах проекции:
В окне часть сцены
Вся сцена с сохранением пропорций вписана в окно
Преобразование координат проекции в экранные координаты можно задать как растяжение / сжатие и
сдвиг:
 X Э  KX  dx,

YЭ  KY  dy,
Z  KZ .
 Э
Такое преобразование сохраняет пропорции объектов благодаря одинаковому коэффициенту растяжения /
сжатия (К) для всех координат. Заметим, что для плоского отображения можно отбросить координату Z.
Рассмотрим, как можно вычислить К, dx и dy. Например, необходимо вписать все изображение сцены в
окно заданных размеров. Условие вписывания можно определить так:
 X Э min  KX min  dx, (1)
Y
 Э min  KYmin  dy, (2)

 X Э max  KX max  dx, (3)
YЭ max  KYmax  dy.(4)
X
 X Э min
 KX .
Если прибавить 1 к 3, то получим: K  Э max
X max  X min
Y
 YЭ min
Из неравенств 2 и 4, следует: K  Э max
 KY .
Ymax  Ymin
Решением системы (1) – (4) для К будет: K  min K X , KY   Kmin .
Если значение K X или значение KY равно бесконечности, то его необходимо отбросить. Если оба – то
значение K min можно задать равным единице. Для того чтобы изображение в окне имело наибольший
размер, выберем K  Kmin . Теперь можно найти dx. Из неравенства (1): dx  X Э min  KX min  dx1 .
Из неравенства (3): dx  X Э max  KX max  dx2 .
Поскольку dx1  dx1 , то величину ах можно выбрать из интервала dx1  dx  dx2 . Выберем центральное
расположение в окне:
X
 KX min  X Э max  KX max
dx  dx2
dx  1
= Э min
2
2
Аналогично найдем dy:
Y
 KYmin  YЭ max  KYmax
dy  Э min
2
При таких значениях dx и dy центр сцены будет в центре окна.
В других случаях, когда в окне необходимо показывать с соответствующим масштабом лишь часть сцены,
можно прямо задавать числовые значения масштаба (К) и координаты сдвига (dx, dy). При
проектировании интерфейса графической системы желательно ограничить выбор К, dx, dy диапазоном
допустимых значений.
В графических системах используются разнообразные способы задания масштаба отображения и
определения границ сцены для показа в окне просмотра. Например, для сдвига часто используют
ползунки скроллинга. Также можно указывать курсором точку на сцене, и затем эта точка становится
центральной точкой окна. Или можно очертить прямоугольник, выделяя границы фрагмента сцены, тогда
этот фрагмент затем будет вписан в окно. И так далее. Все эти способы отображения основываются на
растяжении / сжатии (масштабировании), а также сдвиге, и описываются аффинным преобразованием
координат.
22. Базовые растровые алгоритмы. Алгоритмы вывода прямой линии.
Поскольку экран растрового дисплея с электронно – лучевой трубкой (ЭЛТ) можно рассматривать как
матрицу дискретных элементов (пикселов), каждый из которых может быть подсвечен, нельзя
непосредственно провести отрезок из одной точки в другую. Процесс определения пикселов, наилучшим
образом аппроксимирующих заданный отрезок, называется разложением в растр. В сочетании с
процессом построчной визуализации изображения он известен как преобразование растровой развертки.
Для горизонтальных, вертикальных и наклоненных под углом 45°. отрезков выбор растровых элементов
очевиден. При любой другой ориентации выбрать нужные пикселы труднее, что показано на рис.1.
Общие требования к алгоритмам вычерчивания отрезков следующие: Отрезки должны выглядеть
прямыми, начинаться и заканчиваться в заданных точках, яркость вдоль отрезка должна быть постоянной
и не зависеть от длины и наклона, рисовать нужно быстро.
Постоянная вдоль всего отрезка яркость достигается лишь при проведении горизонтальных,
вертикальных и наклоненных под углом 45° прямых. Для всех других ориентаций разложение в растр
приведет к неравномерности яркости, как это показано на рис. 1.
В большинстве алгоритмов вычерчивания отрезков для упрощения вычислений используется пошаговый
алгоритм. Приведем пример подобного алгоритма:
Простой пошаговый алгоритм
позиция = начало
шаг = приращение
1. if позиция – конец < точность then 4
if позици > конец then 2
if позиция < конец then 3
2. позиция = позиция – шаг
go to 1
3. позиция = позиция + шаг
go to 1
4. finish
23. Алгоритмы вывода окружности и эллипса.
В растр нужно разлагать не только линейные, но и другие, более сложные функции. Разложению
конических сечений, т. е. окружностей, эллипсов, парабол, гипербол, было посвящено значительное число
работ. Наибольшее внимание, разумеется, уделено окружности. Один из наиболее эффективных и
простых для понимания алгоритмов генерации окружности принадлежит Брезенхему. Для начала
заметим, что необходимо сгенерировать только одну восьмую часть окружности. Остальные ее части
могут быть получены последовательными отражениями, как это показано на рис. 5.1. Если сгенерирован
первый октант (от 0 до 45° против часовой стрелки), то второй октант можно получить зеркальным
отражением относительно прямой у = х, что дает в совокупности первый квадрант. Первый квадрант
отражается относительно прямой х = 0 для получения соответствующей части окружности во втором
квадранте. Верхняя полуокружность отражается относительно прямой у = 0 для завершения построения.
На рис. приведены двумерные матрицы соответствующих преобразований.
Для вывода алгоритма рассмотрим первую четверть окружности с центром в начале координат. Заметим,
что если работа алгоритма начинается в точке х = 0, у = R, то при генерации окружности по часовой
стрелке в первом квадранте у является монотонно убывающей функцией аргументам (рис. 5.2).
Аналогично, если исходной точкой является у = 0, х = = R, то при генерации окружности против часовой
стрелки х будет монотонно убывающей функцией аргумента у. В нашем случае выбирается генерация по
часовой стрелке с началом в точке х = 0, у = R. Предполагается, что центр окружности и начальная точка
находятся точно в точках растра.
Для любой заданной точки на окружности при генерации по часовой стрелке существует только три
возможности выбрать следующий пиксел, наилучшим образом приближающий окружность:
горизонтально вправо, по диагонали вниз и вправо, вертикально вниз. На рис. 5.3 эти направления
обозначены соответственно mH , mD , m V . Алгоритм выбирает пиксел, для которого минимален квадрат
расстояния между одним из этих пикселов и окружностью, т. е. минимум из
Рис. 5.2. Окружность в первом квадранте.
Рис.5.3. Выбор пикселов в первом квадранте.
Вычисления можно упростить, если заметить, что в окрестности точки (xi,yi,) возможны только пять
типов пересечений окружности и сетки растра, приведенных на рис. 5.4.
Рис. 5.4. Пересечение окружности и сетки растра.
Пошаговый алгоритм Брезенхема для генерации окружности в первом квадранте
все переменные – целые
инициализация переменных
xi = 0
yi = R
Di = 2(1 – R)
Предел = 0
1 Plot (xi, yi)
if yi < = Предел then 4
Выделение случая 1 или 2, 4 или 5, или 3
if Di < 0 then 2
if Di > 0 then 3
if Di = 0 then 20
определение случая 1 или 2
2 d = 2Di + 2уi – 1
if d < = 0 then 10
if d > 0 then 20
определение случая 4 или 5
3 d = 2Di + 2хi – 1
if d < = 0 then 20
if d > 0 then 30
выполнение шагов
шаг к mH
10 хi = хi + 1
Di = Di + 2хi + 1
gо to 1
шаг mD
20 хi = хi + 1
yi = yi + 1
Di = Di + 2хi – 2уi + 2
gо to 1
4 finish
Блок – схема пошагового алгоритма Брезенхема для генерации окружности в первом квадранте.
24. Кривая Безье и ее геометрический алгоритм.
Кривые Безье были разработаны в 60 – х годах XX века независимо друг от друга Пьером Безье (Bezier)
из автомобилестроительной компании «Рено» и Полем де Кастелье (de Casteljau) из компании «Ситроен»,
где применялись для проектирования кузовов автомобилей.
Несмотря на то, что открытие де Кастелье было сделано несколько ранее Безье (1959), его исследования
не публиковались и скрывались компанией как производственная тайна до конца 1960 – х.
Впервые кривые были представлены широкой публике в 1962 году французским инженером Пьером
Безье, который, разработав их независимо от де Кастелье, использовал их для компьютерного
проектирования автомобильных кузовов. Кривые были названы именем Безье, а именем де Кастелье
назван разработанный им рекурсивный способ определения кривых (алгоритм де Кастелье).
Впоследствии это открытие стало одним из важнейших инструментов систем автоматизированного
проектирования и программ компьютерной графики.
Кривая Безье – параметрическая кривая, задаваемая выражением
, 0  t 1
где
– функция компонент векторов опорных вершин, а
называемые также полиномами Бернштейна.
– базисные функции кривой Безье,
где n – степень полинома, i – порядковый номер опорной вершины.
Виды кривых Безье
Линейные кривые
При n = 1 кривая представляет собой отрезок прямой линии, опорные точки P0 и P1 определяют его
начало и конец.
Кривая задаётся уравнением:
Bt   1  t P0  tP , t  0,1
Квадратичные кривые
(n = 2) задаётся 3 – мя опорными точками: P0, P1 и P2.
2
Bt   1  t  P0 + 2t 1  t P1 + t 2 P2 , t  0,1
Квадратичные кривые Безье в составе сплайнов используются для описания формы символов в шрифтах
TrueType и в SWF файлах.
Кубические кривые
(n = 3) описывается следующим уравнением:
2
3
Bt   1  t  P0 + 3t 1  t  P + 3t 2 1  t P2 , t  0,1
.
Четыре опорные точки P0, P1, P2 и P3, заданные в 2 – х или 3 – мерном пространстве определяют форму
кривой.
Линия берёт начало из точки P0 направляясь к P1 и заканчивается в точке P3 подходя к ней со стороны
P2. То есть кривая не проходит через точки P1 и P2, они используются для указания её направления.
Длина отрезка между P0 и P1 определяет, как скоро кривая повернёт к P3.
В матричной форме кубическая кривая Безье записывается следующим образом:
где
,
называется базисной матрицей Безье:
В современных графических системах, таких как PostScript, Metafont и GIMP для представления
криволинейных форм используются сплайны Безье, составленные из кубических кривых.
Применение в компьютерной графике
Благодаря простоте задания и манипуляции, кривые Безье нашли широкое применение в компьютерной
графике для моделирования гладких линий. Кривая целиком лежит в выпуклой оболочке своих опорных
точек. Это свойство кривых Безье с одной стороны значительно облегчает задачу нахождения точек
пересечения кривых (если не пересекаются выпуклые оболочки, то не пересекаются и сами кривые), а с
другой стороны позволяет визуализировать кривую с помощью её опорных точек. Кроме того, аффинные
преобразования кривой (перенос, масштабирование, вращение) также могут быть осуществлены путём
применения соответствующих трансформаций к опорным точкам.
Наибольшее значение имеют кривые Безье второй и третьей степеней (квадратичные и кубические).
Кривые высших степеней при обработке требуют большего объёма вычислений и для практических целей
используются реже. Для построения сложных по форме линий отдельные кривые Безье могут быть
последовательно соединены друг с другом в сплайн Безье. Для того, чтобы обеспечить гладкость линии в
месте соединения двух кривых, смежные опорные точки обеих кривых должны лежать на одной линии. В
программах векторной графики наподобие Adobe Illustrator или Inkscape подобные фрагменты известны
под названием «путей» (path).
Геометрический алгоритм для кривой Безье
Этот алгоритм позволяет вычислить координаты (х, у) точки кривой Безье по значению параметра t.
1. Каждая сторона контура многоугольника, проходящего по точкам – ориентирам, делится
пропорционально значению t.
2. Точки деления соединяются отрезками прямых и образуют новый многоугольник. Количество узлов
нового контура на единицу меньше, чем количество узлов предыдущего контура.
3. Стороны нового контура снова делятся пропорционально значению t. И так далее. Это продолжается до
тех пор, пока не будет получена единственная точка деления. Эта точка и будет точкой кривой Безье.
Приведем запись геометрического алгоритма на языке С + + :
for ( i = 0; i < = m; i + + )
R[i] = P[i]; / / формируем вспомогательный массив R[]
for ( j = m; i > 0; i – – )
for ( i = 0; i < j; i + + )
R[i] = R[i] + t * (R[i + 1] – R[i]);
Результат работы алгоритма – координаты одной точки кривой Безье записываются в R[0].
25. Алгоритмы вывода фигур. Алгоритмы закрашивания.
Фигурой здесь будем считать плоский геометрический объем, который со стоит из линий контура и точек,
которые содержатся внутри контура общем случае линий контура может быть несколько – когда объект
имеет внутри пустоты. В этом случае для описания таких фигур необходимы два и более контуров.
В некоторых графических системах одним объектом может считаться и более сложная многоконтурная
фигура – совокупность островов с пустотами.
Графический вывод фигур разделяется на две задачи: вывод контура и вывод точек заполнения.
Поскольку контур представляет собой линию, то вывод контура проводится на основе алгоритмов вывода
линий. В зависимости от сложности контура, это могут быть отрезки прямых, кривых или произвольная
последовательность соседних пикселов.
Для вывода точек заполнения известны методы, разделяющиеся в зависимости от использования контура
на два типа – алгоритмы закрашивания от внутренней точки к границам произвольного контура и
алгоритмы, которые используют математическое описание контура.
Алгоритмы закрашивания
Рассмотрим алгоритмы закрашивания произвольного контура, который уже нарисован в растре. Сначала
находится пиксел внутри контура фигуры. Цвет этого пиксела изменяем на нужный цвет заполнения.
Потом проводится анализ цветов всех соседних пикселов. Если цвет некоторого соседнего пиксела не
равен цвету границы контура или цвету заполнения, то цвет этого пиксела изменяется на цвет заполнения.
Потом анализируется цвет пикселов, соседних с предыдущими. И так далее, до тех пор, пока внутри
контура все пикселы не перекрасятся в цвет заполнения.
Пикселы контура – это граница, за которую нельзя выходить в ходе последовательного перебора всех
соседних пикселов. Соседними могут считаться только четыре пиксела (справа, слева, сверху и снизу –
четырехсвязность), или все восемь пикселов (восьмисвязность). Не всякий контур может служить
границей закрашивания (рис. 3.11).
Простейший алгоритм закрашивания. Для всех алгоритмов закрашивания нужно задавать начальную
точку внутри контура с координатами х0, у0. Простейший алгоритм можно описать так:
Шаг 1. Определить х0, у0.
Шаг 2. Выполнить функцию ЗАКРАШИВАНИЕ(х0, у0).
Функцию ЗАКРАШИВАНИЕ ( ) определим так:
Функция ЗАКРАШИВАНИЕ ( х, у)
(
Если цвет пиксела (х, у) не равен цвету границы, то
(
установить для пиксела (х, у) цвет заполнения;
ЗАКРАШИВАНИЕ(х + 1, у);
ЗАКРАШИВАНИЕ (х – 1, у);
ЗАКРАШИВАНИЕ(х, у + 1);
ЗАКРАШИВАНИЕ ( х, у – 1 );
}
}
Такое определение функции является рекурсивным. Рекурсия позволяет упростить запись некоторых
алгоритмов. Но для этого алгоритма рекурсия порождает существенные проблемы – рекурсивные вызовы
функции ЗАКРАШИВАНИЕ () делаются для каждого пиксела, что обычно приводит к переполнению
стека в ходе выполнения компьютерной программы. Практика показывает, что этот алгоритм неприемлем
для фигур площадью в тысячу и больше пикселов.
Можно построить подобный алгоритм и без рекурсии, если вместо стека компьютера использовать
отдельные массивы. Тогда стек не переполняется.
26. Модели описания поверхностей. Аналитическая модель.
Аналитической моделью называется описание поверхности математическими формулами:
z = f(x,y) – описание с помощью функции,
F(x,y,z) = 0 – описание с помощью неявного уравнения.
Зачастую используется параметрическая форма описания поверхности:
 x  Fx ( s , t )

 y  F y ( s, t )
 z  F ( s, t )
z

где s и t – параметры, которые изменяются в определенном диапазоне, а функции Fx, Fy и Fz определяют
форму поверхности.
Преимущество параметрической формы заключается в легкости описания поверхностей, которые
отвечают неоднозначным функциям, и замкнутых поверхностей.
Параметрическое описание можно задать таким образом, что формула не будет существенно изменяться
(усложняться) при поворотах поверхности, и ее масштабировании.
В качестве примера рассмотрим аналитическое описание поверхности шара.
z   R 2  x 2  y 2 – явная функция двух аргументов,
x 2  y 2  z 2  R 2  0 – неявное уравнение,
x = R sin s cos t, y = R sin s sin t, z = R cos s – в параметрической форме.
Аналитическая модель наиболее пригодна для многих операций анализа поверхностей.
Достоинства модели (с позиций КГ):
* легкость расчета координат каждой точки поверхности, нормали;
* небольшой объем данных для описания достаточно сложных форм.
Недостатки:
* сложность формул описания с использованием функций, которые медленно вычисляются на
компьютере, снижают скорость выполнения операций отображения;
* невозможность в большинстве случаев применить данную форму описания непосредственно для
изображения поверхности – поверхность отображается как многогранник, координаты вершин и граней
которого рассчитываются в процессе отображения, что уменьшает скорость сравнительно с
полигональной моделью описания.
27. Вектор полигональная модель поверхности.
Полигональные сетки являются на данный момент самым распространенным представлением, для
которого создано большое количество программного обеспечения, позволяющего редактировать,
передавать по сети и визуализировать модели с использованием аппаратной поддержки.
Характерной особенностью полигональных сеток является поддержка связности модели. В силу этого
полигональные представления хорошо применимы для описания большого числа синтетических
поверхностей.
Однако, отсканированные данные, изначально не содержат информации о связности и непрерывности
поверхностей, а представляют собой набор близко расположенных частиц (sample). Такие ограничения
следуют из устройства сканирующего механизма, который обладает дискретным шагом конечного
разрешения.
Следовательно, для использования полигональных моделей связность должна быть введена искусственно
на этапе препроцессирования. Таким образом, полигональные модели не предназначены для прямой
работы с отсканированными данными, так как требуют восстановления поверхности, что в общем случае
является нетривиальной задачей и сильно зависит от класса обрабатываемых объектов. При этом
восстановленная поверхность не обязательно будет использоваться на этапе визуализации (например,
если модель такой сложности, что проекция треугольника на экран при типичной проекции просмотра
сравнима по площади с одним пикселем).
С другой стороны, создано большое количество методов, позволяющих достаточно эффективно
преобразовывать дискретные отсканированные данные в полигональные сетки ([Curless 96], [Turk 94]).
Более того, современное оборудование высокого класса позволяет выполнять преобразование в сетку
аппаратно.
Гораздо сложнее обстоит ситуация с представлением больших объемов данных и поддержкой различных
уровней детализации. Структура полигональных сеток линейна и они не обеспечивают <естественной>
поддержки многомасштабности, поэтому работа с большими сетками затруднена и требет различных,
зачастую вычислительно сложных методов упрощения. Было создано множество алгоритмов для
создания многомасштабных представлений на основе сеток, имеющих непосредственное отношение к
поставленной задаче.
Практически все технологии упрощения сеток используют некоторые вариации или комбинации
следующих механизмов ([Luebke01], [Xia97], [Hallen01]): сэмплирования (sampling), прореживания
(decimation), адаптивного разбиения (adaptive subdivision) и слияния вершин (vertex merging).
Сэмплирующие алгоритмы упрощают первоначальную геометрию модели, используя либо подмножество
исходных точек, либо пересечение вокселей с моделью на трехмерной сетке. Такие алгоритмы лучше
всего работают на гладких поверхностях без острых углов.
Алгоритмы, использующие адаптивное разбиение находят простую базовую (base) сетку, которая затем
рекурсивно разбивается для аппроксимации первоначальной модели. Такой подход работает хорошо,
когда найти базовую модель относительно просто. Например, базовая модель для участка ландшафта
обычно прямоугольник. Для достижения хороших результатов на произвольных моделях требуется
создание базовой модели, отражающей важные свойства исходной, что может быть нетривиально.
Прореживающие алгоритмы итеративно удаляют вершины или грани из полигональной сетки, производя
триангуляцию после каждого шага. Большинство из них используют только локальные изменения, что
позволяет выполнять упрощение довольно быстро.
Схемы со слиянием вершин работают с помощью свертывания двух или более вершин детализированной
модели в одну, которая в свою очередь может быть совмещена с другими вершинами. Слияние вершин
треугольника уничтожает его, уменьшая общее число треугольников модели. Обычно алгоритмы
используют сложные методы определения, какие вершины нужно слить вместе и в каком порядке.
Методы, использующие слияние ребер (edge collapse), всегда сливают вершины, разделяющие одну грань.
Такие методы сохраняют локальную топологию, и, кроме того, при некоторых условиях могут работать в
реальном времени.
Сложность вычислений в этих методах высока и их использование не всегда оправдано при работе с
дискретными данными, поскольку сложность появляется прежде всего из – за необходимости
поддерживать связность модели (которая в нашем случае была искусственно введена на этапе
препроцессирования). Другой причиной высокой сложности методов является линейная структура сетки,
которую необходимо восстанавливать для визуализации с помощью графических API.
Обобщим свойства полигональных сеток в приложении к поставленной задаче
Преимущества:
+ распространенное представление
+ аппаратная поддержка.
Недостатки:
– неэффективны для работы с дискретными данными из – за искусственной поддержки связности,
сложного препроцессинга
– неэффективны для больших моделей из – за трудностей с организацией многомасштабности.
28. Воксельная модель поверхности.
Классические воксельные (voxel) модели представляют собой трехмерный массив, каждому элементу
которого сопоставлен цвет и коэффициент прозрачности. Такой массив задает приближение объекта с
точностью, определяемой разрешением массива.
Воксельными (или объемными) методами визуализации называются методы визуализации трехмерных
функций, в дискретном случае заданных, например, с помощью описанного выше массива.
Типичные методы воксельной визуализации обрабатывают массив, и формирует проекцию каждого его
элемента на видовую плоскость ([Laur91], [Westover90]). Исходный массив представляет собой
регулярную структуру данных, что существенно используется в методах визуализации. Обычно элемент
массива визуализируется на экране в виде некоторого примитива, так называемого отпечатка (footprint)
или сплата (splat). Различные методы отличаются способами вычислений формы и размеров сплата.
Так как объемы данных в воксельных представлениях значительны даже для небольших моделей,
единственной реальной возможностью работать со сложными объектами является использование
древовидных иерархий. В работе [Laur91] на основе исходного массива строится многомасштабное
представление в виде восьмеричного дерева. Каждый узел дерева содержит усредненное значение цвета и
прозрачности всех своих потомков. Кроме того, каждый узел дерева содержит переменную,
показывающую среднюю ошибку, ассоциированную с данным узлом. Эта переменная показывает
ошибку, возникающую при замене оригинального набора вокселей в данной области пространства на
константную функцию, равную среднему значению цвета всех потомков данного узла. В дальнейшем это
значение используется для управления качеством визуализации и уровнем деталей.
Несмотря на то, что воксельные методы ориентированы в первую очередь на научную визуализацию,
многие идеи, использующиеся в этих методах, находят свое применение в других областях. Например,
идея сплаттинга используется при работе с точечными представлениями, а также с представлениями,
основанными на изображениях.
Обобщим свойства воксельных представлений в приложении к поставленной задаче
Преимущества:
+ простая, регулярная структура;
+ аппаратная поддержка.
Недостатки:
– большой объем данных, поэтому необходимо использовать специальные многомасштабные структуры
для работы со сложными объектами;
– используемые структуры данных хранят внутренние, невидимые, части объекта, тогда как для
поставленной задачи достаточно описание поверхности.
29. Модель поверхности «равномерная сетка».
Эта модель описывает координаты отдельных точек поверхности следующим способом. Каждому узлу
сетки с индексами (i, j) приписывается значение высоты zij. Индексам (i, j) отвечают определенные
значения координат (x, y). Расстояние между узлами одинаковое – dx по оси x, dy по оси y. Фактически
такая модель – это двумерный массив, растр, матрица, каждый элемент которой сохраняет значение
высоты.
Не каждая поверхность может быть представлена этой моделью. Если в каждом узле (i, j) записывается
только одно значение высоты, то это означает, что поверхность описывается однозначной функцией z = f
(x, y). Иначе говоря, это такая поверхность, которую каждая вертикаль пересекает только один раз. Не
могут моделироваться также вертикальные грани. Необходимо заметить, что сетка может быть задана не
только в декартовых координатах. Например, для того чтобы описать поверхность шара однозначной
функцией, можно использовать полярные координаты. С помощью равномерной сетки часто описывают
рельеф земной поверхности.
Положительные черты равномерной сетки:
* простота описания поверхностей;
* возможность быстро узнать высоту любой точки поверхности простой интерполяцией.
Недостатки равномерной сетки:
* поверхности, которые соответствуют неоднозначной функции высоты в узлах сетки, не могут быть
смоделированы;
* для описания сложных поверхностей необходимо большое количество узлов, которое может быть
ограничено объемом памяти компьютера.
30. Модель поверхности «неравномерная сетка».
Неравномерной сеткой называется модель описания поверхности в виде множества отдельных точек {(x0,
y0, z0), (x1, y1, z1), …,(xn – 1, yn – 1, zn – 1)}, принадлежащих поверхности. Эти точки могут быть
получены, например, в результате измерений поверхности какого – нибудь объекта с помощью
определенного оборудования. Такую модель можно считать обобщением для некоторых рассмотренных
выше моделей. Например, векторная полигональная модель и равномерная сетка могут считаться
разновидностями неравномерной сетки.
Рассмотрим модель поверхности в виде множества точечных значений, логически никак не связанных
между собой. Неравномерность задания опорных точек усложняет определение координат для других
точек поверхности, которые не совпадают с опорными точками. Требуются специальные методы
пространственной интерполяции.
Пусть задача заключается в вычислении значения координаты z по известным координатам (x, y). Для
этого необходимо найти несколько самых близких точек, а затем вычислить искомое значение z, исходя
из взаимного расположения этих точек в проекции (x, y). Для равномерной сетки эта задача решается
достаточно просто – поиска фактически нет, сразу рассчитываются индексы самых близких опорных
точек.
Вторая задача заключается в отображении (визуализации) поверхности. Эту задачу можно решать
несколькими способами. Один из наиболее распространенных – триангуляция. Процесс триангуляции
может быть представлен следующим образом:
* находим первые три самые близкие друг к другу точки – получаем одну плоскую треугольную грань;
* находим точку, ближайшую к этой грани, и образовываем смежную грань, и т.д., пока не останется ни
одной отдельной точки.
Download