Лабораторная работа № 7. Аффинные преобразования на плоскости

 

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

Краткие теоретические сведения

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

В компьютерной графике чаще всего используют аффинную и декартовую систему координат. Это прямоугольная координатная система, в которой выбирается точка О - начало координат и два приложенных к ней неколлинеарных единичных вектора ex и ey, которые задают оси координат. Если единичные отрезки на осях не равны, система называется аффинной, если равны и угол между осями координат прямой - прямоугольной декартовой.

Однородным представлением n-мерного объекта является его пред­ставление в (n+1)-мерном пространстве, полученное добавлением еще одной координаты - скалярного множителя. При решении задач компью­терной графики однородные координаты обычно вводятся так: произвольной точке М(x,y) на плоскости ставится в соответствие точка M(x,y,1) в пространстве.

Если нам необходимо преобразовать точку на плоскости с координатами (x,y) в другую точку то задача сводится к поиску новых координат для этой точки - (x). В случае аффинных преобразований такой поиск сведется к решению уравнений

где a, b, c, d, m, n - произвольные числа, причем: .

В случае, когда m и n не равны нулю, для представления преобразования в матричной форме нужно исходные и преобразованные координаты точки записать в однородных координатах (x,y,1) и ( ). Тогда в матричной форме общий вид преобразования будет следующим

Наибольшее распространение получили частные случаи аффинных преобразований:

1. Единичное преобразование. Единичная матрица оставляет точку неподвижной.

2. Сдвиг или плоско-параллельный перенос. Матрица переводит точку на m единиц вдоль оси x и на n -вдоль оси y: .

3. Вращение вокруг начала координат. Его матрица осуществляет поворот точки объекта на угол g против часовой стрелки:

4. Вращение вокруг произвольного центра осуществляет поворот вокруг точки (m,n) на угол g против часовой стрелки. Преобразование выполняется как последовательность трех элементарных:

· сдвиг центра вращения (m,n) в начало координат с помощью матрицы сдвига

· поворот на угол g вокруг начала координат с помощью матрицы вращения

· сдвиг точки (m,n) в исходное положение, используя матрицу сдвига

Итоговое преобразование будет выглядеть так:

5.Симметрия относительно оси, проходящей через начало координат осуществляется преобразованием вида

 

При этом, если угол между осью симметрии и осью Ох = w, то угол g=2*w.

Согласно этому, симметрия относительно оси Ох

 

 

оси Оy

 

оси y=x

 

оси y=-x .

6.Масштабирование – увеличение (уменьшение размеров изображения) - в общем случае изменяет форму объекта. Назначается точка, относительно которой производится преобразование.

Масштабирование относительно точки О - начала координат

где kx ,ky - коэффициенты искажения по осям Ox, Oy соответственно.

При kx=ky=k осуществляется преобразование подобия, при kx # ky изображение искажается. Изображение увеличивается при k > 1 и уменьшается при k < 1.

Масштабирование относительно произвольной точки с координатами (m, n)

 

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

Если координаты точек объекта представлены вектором - столбцом, а не вектором - строкой, соответствующая матрица для преобразований должна быть транспонирована.

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

Для эффективной работы с преобразованиями следует руководствоваться следующими рекомендациями :

- лучше умножение на результирующую матрицу, чем последовательность умножений

- лучше масштабировать, а потом поворачивать, чем поворачивать, а затем масштабировать

- если комбинированное преобразование содержит поворот, то его следует делать отдельно и последним

- для того, чтобы движение казалось непрерывным и плавным, следует выводить кадры достаточно быстро (30-60 мсек) и координаты каждой точки преобразовывать быстрее.

В уравнении для поворота, например, если угол поворота g равен нескольким градусам, то cos g можно принять равным единице, тогда Еще лучше

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

Задание на лабораторную работу:

Написать на языке PASCAL программу:

1. Рисующую многоугольник.

2. Смещающую его на n пикселов вправо и m вниз.

3. Зеркально отражающую его относительно осей координат.

4. Растягивающую (сжимающую) его вдоль координатных осей относительно некоторой заданной точки.

5. Вращающую его относительно центра с координатами (k,l) по часовой стрелке с увеличением размеров, против - с уменьшением.

Дополнительно

Задание выполнить с помощью программ работы с мышью.

 

Требования к защите лабораторной работы

Защита лабораторной работы состоит из демонстрации преподавателю результатов выполнения задания на лабораторную работу и ответов на задаваемые преподавателем вопросы по ходу демонстрации.

 

Требования к отчету

Отчет выполняется на отдельных листах формата А4. Содержит титульный лист с названием работы, оформленный согласно требованиям кафедры, распечатку программы - результат выполнения заданий лабораторной работы с обязательными комментариями.

Вопросы для самоподготовки:

1. Что такое аффинные преобразования и однородные координаты? Где и для чего однородные координаты используются в компьютерной графике?

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

3. Какие системы координат используются в компьютерной графике? Чем различаются мировая и приборная системы координат? Что такое абсолютные и относительные координаты, когда применяются те и другие?

4. Перечислите основные свойства аффинных преобразований, снискавшие им широкое распространение,

5. Чем характерна декартова система координат?

Литература

1. Фоли, Дж. Основы интерактивной машинной графики [текст]: В 2 кн. кн. 2 / Дж. Фоли, А. Дэм; под ред. Ю. М. Баяковского; пер. с англ. В. А. Галактионова и др. - М.: Мир, 1985. - 368c.: ил.

2. Роджерс, Д. Ф. Алгоритмические основы машинной графики [текст] / Д. Ф. Роджерс; пер. с англ. С. А. Вичеса и др.; Под ред. Ю. М. Баяковского, В. А. Галактионова. - М.: Мир, 1989. - 503c.

3. Шикин, Е. В. Компьютерная графика: Динамика, реалист. изображения [текст] / Е. В. Шикин, А. В. Боресков. - М.: ДИАЛОГ-МИФИ, 1996. - 287c.: ил.

4. Боресков, А. В. Компьютерная графика: первое знакомство [текст] / А. В. Боресков, Е. В. Шикин, Г. Е. Шикина; Под ред. Е. В. Шикина. - М.: Финансы и статистика, 1996. - 176c.: ил. - (Диалог с компьютером).