УДК 004.932
Кудрина М.А., Мурзин А.В.
ФГБОУ ВПО "Самарский государственный аэрокосмический университет им. ак. С.П. Королева (национальный исследовательский университет)", Самара, Россия
АФФИННЫЕ ПРЕОБРАЗОВАНИЯ ОБЪЕКТОВ В КОМПЬЮТЕРНОЙ ГРАФИКЕ
Одной из типовых задач, которую приходится решать средствами растровой изобразительной графики, является преобразование как всего изображения в целом, так и его отдельных фрагментов, как то: перемещение, поворот вокруг заданного центра, изменение линейных размеров и т.п.
Данная задача решается использованием аффинных преобразований (affine transformations) [1, 2] .
Аффинные преобразования могут быть очень полезны в следующих ситуациях:
1. Для составления плоского изображения или трехмерной сцены путем компоновки из однотипных элементов, с помощью их копирования, преобразования и перемещения в различные места изображения. Например, для создания симметричных объектов, таких, как снежинка. Можно разработать один мотив и затем составить изображение всего объекта путем отражений, поворотов и перемещений данного мотива .
2. Для просмотра трехмерных объектов с различных точек зрения. В этом случае можно зафиксировать положение камеры и поворачивать сцену или наоборот, сцену оставить неподвижной и передвигать вокруг нее камеру. Подобные манипуляции могут быть осуществлены с помощью трехмерных аффинных преобразований.
3. Для проецирования трехмерных объектов на плоскость и отображения сцены в окне. Так, например, для аксонометрического проецирования используется последовательность двух поворотов плоскости проецирования, а для отображения в окне - совокупность масштабирования и перемещения.
Аффинные преобразования на плоскости в общем виде описываются следующими формулами:
J X = Ax + By + C, [7 = Dx + Ey + F,
где A, B, C, D, E, F - некие константы.
f X f A B c 1 f x 1
Преобразование (1) можно записать в матричной форме 7 = D E F y
J і0 0 1j l1 J
Аффинным преобразованиям может подвергаться как сама система координат, так и объекты на плоскости.
Если преобразование производится над системой координат, то значения (х, у) в выражении (1) интерпретируются как координаты точки в старой системе координат, а значения (Х, У) - координаты
точки в новой системе координат.
Преобразованиям могут подвергаться не только системы координат, но и объекты (фигуры). При преобразованиях объектов на плоскости за (x, у) примем координаты точки до преобразования, (X, Y) - новые координаты точки после преобразования.
В таблице 1 приведены матрицы основных типов аффинных преобразований систем координат и объектов на плоскости.
Таблица 1
Основные типы аффинных преобразований систем координат и объектов на плоскости
Преобразования системы координат Преобразования объектов
Перемещение
f 1 0 -dx 1 f1 0 dx 1
0 1 -dy 0 1 dy
l001 j 10 0 1 j
Масштабирование
Коэффициенты kx, ky могут быть отрицательными. Например, kx= -1 при масштабировании соответствует зеркальному отражению относительно оси y. Аналогично, ky= -1 соответствует зеркальному отражению относительно оси x, а коэффициенты kx= ky = -1 будут описывать отражение относительно начала координат .
'УК 0 0^1 0 1/ky 0 l0 0 1J 'kx 0 0^ 0 ky 0 10 0 к
Поворот Положительный угол поворота дает поворот от оси х к оси у!
f cosf sinf 01 - sinf cosf 0 l 0 0 1J 'cosf - sinf 01 sin f cos f 0 i 0 01J
Сдвиги
f 1 -h 01 f 1 h 01
0 1 0 - сдвиг вдоль оси x 0 1 0 - сдвиг вдоль оси x
l0 0 1J l0 0 1 j
f1 0 0 f1 0 01
-g 1 0 - сдвиг вдоль оси y g 1 0 - сдвиг вдоль оси y
l0 0 1 l0 0 1J
На рис. 1 приведен пример действия каждого типа преобразования над объектом на плоскости в отдельности .
Аналогичные преобразования возможны и в трехмерном пространстве. Общий вид трехмерных аффинных преобразований координат:
а) исходное Сражение
б) перемещение
Y Y
в) масштабирование г) поворот
д) сдвиг
Рис. 1. Аффинные преобразования на плоскости f X = Ax + By + Cz + D,
I Y = Ex + Fy + Gz + H,
|z = Kx + Ly + Mz + N.
Матричная форма:
f X ^ f A B C D' f x 1
Y E F G H y
Z K L M N z
,1 ) ,0 0 0 1 , ,1)
В таблице 2 приведены матрицы основных типов трехмерных аффинных преобразований систем координат и объектов.
Таблица 2
Основные типы трехмерных аффинных преобразований систем координат и объектов
Преобразования системы координат 1 Преобразования объектов
Перемещение
f 10 0 -dx 1
0 10 -dy
0 0 1 -dz
0 0 0 1
f 1 0 0 dx 1
0 10 dy
0 0 1 dz 0 0 0 1
Масштабирование
1 К 0 0 01 f kx 0 0 01
0 1 kx 0 0 0 ky 0 0
0 0 1 kx 0 0 0 kz 0
0 0 0 1) 1 0 0 0 1)
Поворот
При поворотах положительные значения угла вызывает вращение по часовой стрелке относительно оси, если смотреть внутрь по направлению к началу отсчета из точки, находящейся на положительном направлении оси.
f 1 0 0 01 f1 0 0 01
0 cos# sin# 0 - поворот СК вокруг 0 cos# -sin# 0 - поворот объекта во
0 -sin# cos# 0 оси x на угол # 0 sin# cos# 0 круг оси x на угол #
10 0 0 і) 10 0 0 1)
f cos b 0 - sin b 01 f cos b 0 sinb 0
0 1 0 0 - поворот СК вокруг 0 1 0 0 - поворот объекта во
sin b 0 cos b 0 оси y на угол р - sinb 0 cos b 0 круг оси y на угол p
1 0 0 0 1 1 0 0 0 1,
cosy sin у 0 0Л
-sinу cosy 0 0 0 0 10
0 0 0 1,
- поворот СК вокруг оси z на угол у
cosy -sin У 0 0N
sin у cos у 0 0
0 0 1 0
0 0 0 1
- поворот объекта вокруг оси z на угол у
Сдвиги
Трехмерные сдвиги отличаются большим разнообразием, чем их двумерные аналоги. Матрица простейшего элементарного сдвига является единичной матрицей, в которой один ноль заменен некоторой величиной f
f 1 0 0 0Л
-f 1 0 0 - пример трехмерного сдвига 0 0 10 0 0 0 1,
f 1 0 0 0Л
f 1 0 0 - пример трехмерного сдвига 0 0 10 0 0 0 1,
изо
Основные свойства аффинных преобразований:
Любое аффинное преобразование может быть представлено как совокупность простейших операций -перемещение, масштабирование, поворот. Преобразование сдвига может быть разложено на комбинацию двух поворотов и масштабирования.
При аффинном преобразовании сохраняются прямые линии, параллельность прямых, отношения длин отрезков, лежащих на одной прямой и отношения площадей фигур.
Любое преобразование точки относительно начала координат можно представить как обратное преобразование системы координат. Например, поворот точки на угол j относительно начала координат мож-
но рассматривать как поворот системы координат на угол -j.
Если производится ряд последовательных аффинных преобразований над системой координат или объектом, то результирующая матрица преобразования находится как произведение матриц элементарных преобразований, перемноженных в обратном порядке.
Программа создания матриц аффинных преобразований
На кафедре информационных систем и технологий Самарского государственного аэрокосмического университета им. академика С.П. Королева разработана программа, позволяющая упростить задачу составления матриц элементарных преобразований и нахождения матриц сложных преобразований, являющихся результатом ряда последовательных элементарных.
Название матрицы Поворот_________
Название матрицы I Перемещение
Название матрицы
[Перемещен
Название матрицы
[Сдвиг
Тип перобразоеания (•) Система координат О Объект
Тип леробразоаания (•) Система координат О Объект
Тип перобразования (•) Система координат О Объект
Тип перобразования
(•) Система координат О Объект
Угол поворота (в градусах)
Г~1 Не вычислять тригонометрические функции
Коэффициенты смещения По х (d_x):
Коэффициенты смещения
Пох(с1_х):
Ось сдвига ® X Oy
По У (d_y):
По у (d___у):
Величина сдвиге
Рис. 2. Создание матриц элементарных преобразований
На рис. 2 приведен фрагмент окна создания матриц элементарных преобразований. Для создания
матрицы достаточно указать тип элементарного преобразования и его параметры. В качестве параметров могут выступать не только числа, но и любые переменные и выражения.
После создания матрицы переносятся в область перемножения, где можно перемножить их в прямом и обратном порядке (см. рис. 3).
Рис. 3. Перемножение матриц
Матрицы можно редактировать, упорядочивать, удалять, находить определитель и обратную матрицу, можно умножать на столбец, тем самым, получая координаты точки после аффинного преобразования (см. рис. 4).
В программе также поддерживаются матрицы трехмерных аффинных преобразований размерностью 4x4 (см. рис. 4).
Рис. 5. Графический интерфейс пользователя
Графический интерфейс пользователя состоит из двух частей: песочницы и рабочей среды (см. рис. 5). Песочница представляет собой "банк" созданных матриц элементарных преобразований. Все матрицы из песочницы можно сохранить в файл, а потом загрузить из него. Затем созданные матрицы копируются в рабочую среду, где их упорядочивают и перемножают. Результирующую матрицу можно сохранять в песочнице.
Данная программа используется в учебном процессе в курсе "Компьютерная графика" [3] для прове-
дения лекционных занятий и лабораторных работ, а также для составления заданий контрольной работы "Аффинные преобразования" и создания аттестационных педагогических измерительных материалов [4, 5]. Программа позволяет автоматизировать процесс составления тестовых задач.
ЛИТЕРАТУРА
1. Порев В. Н. Компьютерная графика. - СПб.: БХВ-Петербург, 2002. - 432 с. : ил.
2. Хилл Ф. Open GL. Программирование компьютерной графики. Для профессионалов. - СПб.:Питер,
2002. - 1088с.:ил. ISBN 5-318-00219-6
3. Кудрина М.А., Кудрин К.А., Вытягов А.А., Ионов Д.О. Разработка системы дистанционного обучения для курса "Компьютерная графика" с помощью Moodle: Труды международного симпозиума Надежность и качество. 2010. Т. I. С. 165.
4. Кудрина М.А., Кудрин К.А., Дегтярева О.А. Аттестационный педагогический измерительный материал по курсу "Компьютерная графика"// Надежность и качество 2008. Труды межд. симпозиума. Пенза, 2008, С. 162-163.
5. Кудрина М.А. Использование аттестационно-педагогических измерительных материалов по курсу
"Компьютерная графика" в учебном процессе"//Образование - инвестиции в успех: Материалы науч.-
прак. конф., посвящ. 15-лет. казахст.-германс. учеб.центра "Андас". - Алматы: "Исламнур", 2009. С. 115-118 ISBN 9965-9981-5-9