Координатная и растровая графика. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Координатная и растровая графика.



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

Лекция № 1

Введение.

Машинная графика появилась позже всего. Требуются очень серьёзные аппаратные ресурсы. Первые графические пакеты писались на заказ. Ни одна разработка с другой не стыковалась. Один из серьёзных пакетов был предназначен для корпорации «Фото». После появления микросхем памяти и носителей большого объёма реализация любой графики стала реальной. Первый вопрос, который стал была стандартизация. В области стандартизации выделяют два направления. Первый раздел, который позволяет хранить данные в формате понятном любому программному продукту, второй – обеспечение общего подхода к построению программных средств, чтобы обеспечить переносимость программного продукта с компьютера на компьютер. Здесь решаются проблемы получения устройствонезависимых программных продуктов. Имеется в виду способность работы при подключении другого устройства.

В 1985 году разработан первый стандарт Graphical Kernei System. В этом стандарте вопросу хранения данных не уделяется внимания, а скорее общее строение проекта.

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

Машинной графикой называется совокупность методов и средств для преобразования данных в графическую форму представления и из графической формы представления в числовую с помощью ЭВМ. С точки зрения математического аппарата выделяют 3 области:

1) Синтез изображения.

2) Анализ изображения.

3) Обработка изображения.

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

Линия – координаты начала и конца отрезка.

Описание – уравнение прямой через две точки.

Устройство ввода – планшет.

Действия оператора – на ручную сборку.

Любое изображение разбивается на сегменты. Сегмент и изображение может быть идентифицирован, подвергаться собственным образованиям и его можно хранить, выводить.

Пример. Организация занимается чертежами. В библиотеке сегмент (винт, гайка).

Противоположный синтезу – анализ. Мы имеем некоторое исходное изображение, из которого вычленяем участки по совокупности признаков. Сложнейший математический аппарат, который базируется на распознавании образов.

Пример. Распознаваемый объект черно-белый. Это некоторое изображение с погрешностью. У идеально правильного уже заранее получены последовательности записей. Производится последовательное сравнение каждого образа из библиотеки. Вычисляется некоторый параметр, который использует отклонение. Выбирается с наименьшими отклонениями. Исследуемый объект тождественно равный с которым получили наименьшие отклонения. Эта часть наименее изучена теоретически.

Обработка. Улучшить качество изображения. При обработке изображения основными методами являются изменение контрастности, яркости, подавление искажений и целый набор способов фильтрации. Изображения типа фотографий. Обработка аэрокосмической фотосъёмки.

Лекция № 2

Цветность изображения.

 
 

Различают цветные и монохромные. Монохромное изображение представляется двухцветным. На описание простейшего монохромного изображения требуется 1 бит на пиксел. Общепринято 1 – точка выводится и 0 – точка не выводится. Его называют черно-белым условно, так как точка может быть любого цвета, в том числе и цвет фона не обязательно должен быть чёрным. Далее мы будем говорить о черно-белом. В самом деле он широко используется. Например, станок с числовым программным управлением. Мониторы такого типа в 100 раз дешевле. Монохромное изображение используется в тех областях, где оператор проводит много времени за компьютером. Такие мониторы формируют изображении двумя способами: изображения с полутонами или с истинными градациями света. Первый тип формируется таким образом: выделяется некоторая элементарная зона, состоящая из нескольких пикселей. И такая зона соответствует выводу одной точки на экран.

 

 
 

Примерно также на матричном принтере. Также формируется у струйных и лазерных. Более высокое качество на струйных или лазерных объясняется тем, что физический размер отображения точки там существенно ниже. Чем больше по количеству участков отведено под вывод точки, тем большее количество градаций псевдосерого можно получить. Практика показала, что более 16 оттенков получать не имеет смысла из-за резкого снижения качества изображения. Наиболее распространены 4 градации серого, а иногда 8. В изображении с истинными градациями серого соотношение белого/чёрного задаётся двоичным кодом.

Для монохромных Uуправляющее равно 0 или 1, то есть включено, выключено. Для получения истинных градаций используют разряды. В зависимости от него меняется Uуправляющее.

 

n

Uуправляющее

 

Мы будем управлять интенсивностью. Код длиной n разрядов всегда даёт 2 в степени n комбинаций. Фактически можно получить от 1 до нескольких миллионов. Но такие мониторы более дорогие.

Достоинством такого монитора является прежде всего маленькая зернистость. У мониторов такого типа люминофор нанесён равномерным слоем. Расстояние от точки до точки определяется точностью пластин. Эти методы имеют очень высокую точность. Элементарно строится дисплей с 1000 точек по горизонтали и вертикали. Специализированно используются в ядерной физике, для обработки аэрофотосъёмки, в очень дорогих медицинских комплексах. Принципиально при одном и том же уровне технологии монохромный дисплей будет по точности в несколько раз выше, чем цветной. Как правило изображение с истинными градациями серого хранится в файлах особого формата. Они позволяют оценить степень достоверности, есть алгоритмы частичного восстановления качества изображения, могут использоваться при применении особых алгоритмов плотного сжатия. На сегодняшний день известно более 10 способов формирования цветного изображения. Все они основаны на смешивании базовых цветов. Формирование совершенно различно для мониторов и для принтеров. Для мониторов сложение базовых цветов, а для принтера вычитание чего-то из полного спектра.

Работа с RGB палитрой.

R – red

G – green

B – blue

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

 
 

 

 


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

Используется три пушки: R, G, B. Они реально управляются через свои ЦАП.

1.

1(R1(n), G1(n), B1(n))

2(R2(n), G2(n), B2(n))

M – количество точек.

2.

Запись по цветовым плоскостям. Все красные цвета, затем все зелёные, все синие. Оказывается, что для многих изображений удобнее записывать именно этим способом, так как оно легко сжимается. Каждый программный продукт имеет таблицу цветов.

 

№ цвета R G B
 
 
 

 

Палитра может устанавливаться собственно 16 цветов, 256 и.т.д.

Надо говорить о прямом задании цвета. Когда мы указываем номер цвета в палитре – это способ косвенного задания цвета, кроме того внутри различают прямые и косвенные ссылки.

В последнее время появилась тенденция формировать цвет по аналогии с телевизорами.

H (Hue) – цвет

S (Saturation) – насыщение

I (Intensity) – интенсивность

HSL (Luminosity) – яркость

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

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

 

Лекция № 3

Стандарт GKS.

Разработан в 1985 году. В этом стандарте впервые определено понятие ядра графической системы (ЯГС). ЯГС отвечает всем общим требованиям построения программных продуктов. Включает в себя пять групп требований, которые обеспечивают универсальность разработки.

1. 1) Совместимость. Должно не иметь противоречий со стандартными прикладными программами.

2) Ортогональность. Внутренние модули и функции не зависят друг от друга.

2. 1) Полнота. Запросы приложений должны выполняться хотя бы на одном функциональном уровне.

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

3) Компактность. Подразумевает ограничение минимального числа функций и параметров, обеспечивающих работоспособность приложений.

4) Широта. Разбиение действий на различный уровень сложности от самых простейших до интеллектуальных.

3. Интерфейс пользователя.

1) Формируется понятие комфортабельности. Интерфейс должен быть адаптирован для потребностей пользователя.

2) Прозрачность. Ясный, понятный, однозначный.

3) Устойчивость. При любых ошибках в прикладной программе сама система должна остаться работоспособной.

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

При выводе не только запрещать запись программы, а выводить информацию об ошибке. Основа для разработки двух стандартов: GUA и CUI.

  1. на примере Windows.
  2. шире распространён у пакетов проектирования (все подменю главного меню не накладываются на изображение. Строка статуса располагается внизу.

4. Требования к устройствам ввода, вывода.

1) Приборная независимость. Данные должны формироваться таким способом, что их чтение или запись возможны при подключении произвольного устройства. Реально обеспечивается драйверами (желательно стандартными). Если его нет, то его надо включить в программу.

2) Возможность приборной широты. Произвольный набор периферии. Конфигурация устройств определяется пользователем.

5. Реализуемость.

1) Языковая независимость. Ядро любой системы является набором алгоритмов. Это логическая конструкция. Эту логическую конструкцию нужно описать одним из стандартных продуктов. Разрабатываемый продукт должен работать на одной из ОС.

2) Понятие надёжность. Никакие действия ламера не должны принципиально разрушить вашу программу.

 

В приведённом выше делении классов можно составить таблицу.

 

использует

       
 
 
   

 


создаёт

 

       
   


использует

       
   
 

 

 


Подробнейшая проработка внутри системы ЯГС написано в языконезависимой системе. Каждая функция ядра записывается на некотором языке программирования. Совокупность таких описаний называется языковой оболочкой. Прикладной программист создаёт проблемно-ориентированную оболочку. Она может быть написана на другом языке.

 
 

 


Также в этом стандарте сформулированы понятия примитива и атрибута. Примитивы ввода/вывода – это некоторые базовые графические элементы, используемые для создания изображения. Минимальный набор примитивов оговорён в данном стандарте. Их шесть.

1) Ломаная генерируется из отрезков и координат точек, причём последовательность записи точек определяет порядок их соединения. Линия – частный случай ломаной. Точка – вырожденная линия.

2) Полимаркер – это набор из некоторых символов, которые могут центрироваться в точке с заданными координатами. В системе: + – * и так далее.

3) Текст – это последовательность литер, для которой задаётся первая позиция вывода.

4) Полигональная область. Многоугольник. Задаётся последовательностью точек, очень похожа на ломаную, но последняя точка совпадает с первой. Внутренней области присваивается некоторое свойство.

5) Матрица ячеек – имеет прямоугольный вид, внутри которого каждой точке присваивается свой цвет.

6) Обобщённый примитив вывода – для учёта конкретных устройств вывода на графической станции.

 

Из стандартного набора можно построить изображение любой сложности. Набор программ всегда из простейших элементов компонует в более сложные примитивы. Каждому примитиву ставится в соответствие набор атрибутов. Атрибуты определяют конкретный вид этого примитива при отображении. Для индикатора целеуказания атрибутом является некоторое число. Это число формируетcя в следствие действий оператора. Реально использовать, когда несколько примитивов формируются в некоторый сегмент. Для примитива типа линия формируются атрибуты:

типы линии

толщина линии (кратная некоторой базовой)

цвет линии

Для примитива типа текст имеется довольно большое количество атрибутов: шрифт, высота, вертикаль, направление, междулитерный просвет, выравнивание, цвет и т.д.

Для полигональной сетки может задаваться заливка цветом, штриховка и заполнение по шаблону. Хуже всего задаётся заполнение по шаблону (размер шаблона, точка привязки). К этой точке прикрепляется нижний угол выбранного элемента шаблона. Заполнение вправо, вправо вверх.

Атрибуты принято делить на зависимые и независимые. Независимые обязательно устанавливаются глобально после запуска программы и действуют либо до окончания программы, либо до командной строки с отменой их действия. При описании зависимых атрибутов используются индексы. Множество значений атрибутов данного типа называется связкой. Фактически она представляет таблицу, в которую занесено полное значение разновидности этого атрибута. Обращение к ним по индексу.

 
 


таблица связок

 
 

 


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

Пример. Размер маркера. При пересылке на станцию с другими техническими параметрами можно получить искажения. 256 ® 16.

 

Сегментация.

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

1) Открыть сегмент;

2) Как бы суммируем: С = k1ПВ1 + k3ПВ3 + …;

3) Закрыть сегмент.

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

1) Открываем CN+1

2) CN+1= CN+kiПВ3

3) Закрываем CN+1

Пример. Треугольник. Примитивы вывода 3 линии.

 

(1,0)

2) C=LIN (0,0;1,0) + LIN (1,0;0,1) + LIN (1,0;0,0)

 

(0,0) (0,1)

Что плохо для сегмента? На разных станциях нельзя присвоить разные атрибуты. Для сегментов наиболее важными параметрами являются:

1) Приоритет. Он определяет, какой из двух сегментов будет виден при наложении друг на друга. Чем выше приоритет, тем более в высоком слое он будет.

2) Чувствительность. Для сегмента определяется чувствительность, то есть доступность сегмента на конкретной станции.

3) Выделение яркостью или цветом выбранного сегмента.

4) Видимость. Некоторые файлы не открываются на конкретном компьютере.

 

Преобразования над сегментом всегда выполняются в нормированных координатах до выполнения отсечения и в следующем порядке: сдвиг ® масштаб ® поворот.

В стандарте GKS есть понятие памяти сегментов. Есть два типа памяти.

1) Общая память сегментов.

2) Память графической станции.

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

При случае 1 система надёжнее.

 

Полигональная сетка.

 
 

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

 

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

Параметрические кубические прямые описывают поверхность через уравнения третьего порядка.

f(x, y, z), причём уравнений записывается три. f – это многочлен третьего порядка.

x = f1(y, z, t)

y = f2(x, z, t)

z = f3(x, y, t)

Существует целый набор способов представления. Число участков сразу же снижается, сложность вычислений возрастает. Всё равно сложное тело описать одним уравнением не получится. Как описывать полигоны?

Например, здесь 2 куска поверхности с разными описаниями, а вообще их может быть и больше.

 

 
 

Способы описания полигональной сетки:

1) Явное задание многоугольников.

2) С помощью указателей в списке вершин.

3) Список рёбер.

 

1. P – многоугольник. P=((x1, y1, z1), (x2, y2, z2), (x3, y3, z3), …, (xn, yn, zn)). Причём точки в перечислении записываются строго в порядке обхода многоугольника. Последняя n-я точка соединяется с первой в записи. Фигура – это совокупность многоугольников.

F = {P1, P2, …,Pn}

Пример. F = {P1, P2, P2}

P1=((x1, y1, z1), (x2, y2, z2), (x7, y7, z7))

P2=((x7, y7, z7), (x6, y6, z6), (x8, y8, z8), (x9, y9, z9))

P3=((x3, y3, z3), (x4, y4, z4), (x5, y5, z5), (x6, y6, z6), (x7, y7, z7))

 

2 3 4

 
 

 


I III

1 9 7

II

5

8 6

 

– мы прорисовывали 2 раза. Это не модно. Координаты точки 7 входят несколько раз. Мы дублируем одни и те же данные. Точка, участвующая в описании двух сторон будет записываться дважды, трёх сторон – трижды и так далее. Объём хранимой информации явно завышен. Существуют математические способы определения общих участков пространственных кривых, но количество сравнений для выполнения таких отсечений становится неоправданно большим. Также редактировать такие ссылки очень сложно. Способ этот громоздкий, но легко доступный для понимания.

2. 1) Составляется предварительный список вершин, не обязательно по возрастанию номеров:

(x1, y1, z1),

(x2, y2, z2)

(x9, y9, z9)

В этом списке ни одна точка не повторяется дважды. Затем ориентируясь на номер записи в списке вершин описывают полигон.

P1=(1, 2, 7)

P2=(6, 7, 9, 8)

P3=(3, 4, 5, 6, 7)

Сами записи проще, занимают меньший объём памяти, гораздо проще редактировать фигуру.

 

z

 

7 6

 
 


2 3

 

 

8 5 x

 

1 4

 

y

 

1 – (010)

2 – (011)

3 – (111)

4 – (110)

5 – (100)

6 – (101)

7 – (001)

8 – (000)

Полный куб:

P1=(1, 8, 5, 4)

P2=(1, 2, 3, 4)

P3=(2, 7, 6, 3)

P4=(7, 6, 5, 8)

P5=(1, 2, 7, 8)

P6=(3, 6, 5, 4)

Повторение перерисовывания общих рёбер не убрано.

3. Явное задание рёбер. При явном задании рёбер также первоначально составляется список вершин.

а) V1

V2

V9

б) На основании этого списка составляется список рёбер.

E1= {1; 2}

E2= {2; 7}

E3= {7;1}

В этой записи для избежания пересечений, указывается, какому полигону принадлежит ребро и фиктивный параметр рисовать или не рисовать (a и ù a).

E1= {1; 2; P1; a}

E2= {2; 7; P1; a}

E3= {7;1; P1; P2; a}

Если мы ХЗ ХЗ ХЗ ХЗ.

E4= {7; 6; P2; a}

E5= {6; 8; P2; a}

E6= {8;9; P2; a}

E7= {9;7; P2; ù a}

 

 


E1 E2

E3

1

3 E7 7

 

E6 E4

 

8 6

E5

Из списка рёбер записывается полигон.

P1=(E1, E2, E3)

P2=(E7, E4, E5, E6)

Исходя из совокупностей рёбер исключив пересечения, составляется описание полигональной сетки. На первый взгляд такое описание сложнее. В самом деле, объём описания не намного больше, но обрабатывается с такой же скоростью.

 

Свойства.

1. Если перемешаем точки, то не получится использовать ту же запись, то есть сложно организовать интерактивный режим, нет относительных координат.

2. Вектора R4 и R4‘ не стыкуются, следовательно куски стыкуются не гладко.

 

2) РассмотриРаР

м форму Безье. Запись выглядит чуть лучше.

При записи в форме Безье исходными являются координаты четырёх точек.

 
 


P2

 
 

 


P1 P4

 
 

 


P3

 

P1, P2, совпадают с вектором касательной в точке P1; P3, P4 – с вектором касательной в точке P4. И к ним опущены перпендикуляры.

Исходные данные – координаты точек P1, P2, P3, P4. Математически вывели, что касательный вектор определяется по формуле:

Вектор Эрмита:

матрица вектор

Безье Безье

Тогда x(t)=T*Mhb*Mh*Gb=T*Mb*Gb, где

Таким образом, матрицы Mh(цифровая)b, Mb – числовые. В Gb подставляем координаты четырёх точек и получаем пространственное представление кривой третьего порядка.

1. Эта форма записи пригодна для использования в интерактивных режимах.

2. В точках сопряжения двух отрезков производная непрерывна и поверхность получается сглаженной без изломов.

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

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

Пример.

 

 

Запись уравнения В-сплайна отличается матрицей в формуле стоящей на втором месте и заданием векторов.

x(t) = T*Ms*Gsx, где

, где 2 £ i £ n-2

Берём первые 4 точки, рисуем участок, затем сдвиг на одну и т.д. Эти кусочки стыкуются друг с другом. Линия эта непрерывна, выполняется функция частичного сглаживания далеко стоящих точек. В настоящее время широко применяется в описании сложных 3D объектов. Особенно выгодно, когда есть макет изделия, если его склеить, получим погрешности, применим В-сплайн, получим обтекаемую поверхность. Применяется в самолётостроении.

МАТРИЧНЫЕ ПРЕОБРАЗОВАНИЯ ОБЪЕКТОВ

 

Двумерные преобразования относительно координат.

1. Сдвиг.

y

 
 


Сдвиг точки по OY обозначается Dy,

P’(x’,y’) по OX обозначается Dx,

       
 
   
 


Dy x’ = x + Dx,

P(x,y) y’ = y + Dy,

 
 


Важен знак коэффициента D.

x


Dx

[x’, y’] = [x, y] + [Dx, Dy]

P’ = P + T

Теоретически для любого изображения нужно выполнить такие действия над каждой точкой изображения. Если имеем дело с векторным изображением, то для отрезка (А, В) достаточно выполнить перенос концов отрезка (А’, В’). Данное утверждение справедливо для действий масштабирования и поворота. Три действия сдвиг, масштаб и поворот позволяют получить абсолютно любое пространственное преобразование объекта.

2. Масштабирование.

y

       
 
   
 

 

 


P’(x’, y’)

P(x,y)

 

x

При масштабировании координаты точки умножаются на коэффициент масштабирования.

 
 


x’ = x * Sx

y’ = y * Sy

 

Запишем в матричной форме коэффициент масштабирования S.

Тогда

P’ = P * S

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

Для простоты промасштабируем по обоим осям.

Пример. Пусть начало отрезка проходит через начало координат.

1) y

Промасштабируем его по обеим осям с коэффициентом 2.

P2(1,1) Sx = Sy = 2.

P3(0.5;0.5)

x

P1(0,0)

Тогда получится

y

 

P2‘(2, 2)

 

 

P1‘(0,0)

 
 


2) Возьмём P3(0.5;0.5). Выполним масштаб по обеим осям с тем же коэффициентом. Зрительно отрезок как бы сместился вправо. При масштабировании это происходит всегда.

y

P2(2,2)

 

 

P3(1,1)

 


x

 


3. Поворот. Если известен угол поворота a, то

y

P2‘(x’,y’) x’ = x cos a – y sin a

y’ = x sin a + y cos a

 

 

a P(x,y)

 
 

 


x

В матричной форме

Или P’ = P * R, где R – это матрица поворота. При движении против часовой стрелки угол поворота считается положительным, при движении по часовой стрелке угол поворота отрицательный. Недостатки в преобразованиях: сдвиг выполняется через сложение, а масштаб и поворот через умножение. При достаточно сложном объекте это неудобно. Чтобы уйти от сложения в сдвиге объекта, из математики позаимствовали понятие однородных координат.

P(Wx,Wy,W)

То есть, для точки в двухмерном пространстве появляется фиктивная третья координата:

Тогда сдвиг выполняется в матричной форме через умножение P’ = P * T. Таким же образом третья координата добавляется в действие масштабирования и поворота.

Для масштабирования:

 

 

 

Для поворота:

P’ = P * T * S *R – даёт наименьшее количество операций умножения.

 

Двухмерное преобразование относительно произвольной точки.

 

       
 
   
 


P(x,y) – над которой выполняется преобразование

 

 
 


P1(x1,y1)

 

 
 

 


Результирующее положение точки P’(x’,y’). Относительно начала координат мы знаем. Проще всего так:

1) Сдвинем начало координат в точку P1(x1,y1).

2) Выполним все нужные действия над точкой P.

3) Вернёмся к исходной системе координат.

 

Сдвиг всей картинки на величину –x1 и –y1:

сдвиг действия возврат

Есть отдельные сокращённые матрицы для сдвига, масштаба и поворота относительно любой точки. Смысл – сократить количество операций умножения.

Например.

– результат – это матрица размером 3х3.

Результат умножения таких матриц имеет вид:

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

Очень часто применяется способ упрощения реализации поворота. От кадра к кадру угол меняется не более чем на 1 градус. В этом случае косинус близок к 1, то есть cos a»1, при a £ 1°:



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 185; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.131.110.169 (0.386 с.)