МОДЕЛИ ОТОБРАЖЕНИЯ ДАННЫХ
В компьютерной графике все, что относится к двумерному случаю, принято обозначать символом 2D (2-dimension). Допустим, на плоскости введена прямолинейная координатная система.
Тогда каждой точке М ставится в соответствие упорядочен-' ная пара чисел (х, у) ее координат (рис. 4.26).Рис. 4.26. Точка в прямоугольной системе координат
Вводя на плоскости еще одну прямолинейную систему координат, мы ставим в соответствие той же точке М другую пару чисел — (х[*], у*).
Переход от одной прямолинейной координатной системы на плоскости к другой описывается следующими соотношениями: х* = ах +$у + X; у* = ух + 8у + р, где а, Р, у,Х, р — произвольные числа, связанные неравенством
В аффинных (от лат. affinis — родственный) преобразованиях* плоскости особую роль играют несколько важных частных случаев, имеющих хорошо прослеживаемые геометрические характеристики.
При исследовании геометрического смысла числовых коэффициентов в формулах, помеченный символом «*», для этих случаев удобно считать, что заданная система координат является прямоугольной декартовой.
Рассмотрим простейшие аффинные преобразования.
А. Поворот (вокруг начальной точки на угол ф) (рис. 4.27) описывается формулами: х* = xcostp -ysintp, у* = xsinip + ycos(p.
Б.
Растяжение (сжатие) вдоль координатных осей можно задать так: х* - ах, у* = 6у, а gt; 0, 8 gt; 0.Рис. 4.28. Растяжение вдоль осей
Растяжение (сжатие) вдоль оси абсцисс обеспечивается при условии, что а gt;1 (а lt; 1). На рис. 4.28 а =5 gt; 1.
В. Отражение (относительно оси абсцисс) (рис. 4.29) задается при помощи формул: х *= х; у * = - у.
Г. На рис. 4.30 вектор переноса ММ* имеет координаты X и р. Перенос обеспечивают соотношения: х* = х + X; у* = у + р.
Выбор этих четырех частных случаев определяется двумя обстоятельствами.
Рис. 4.30. Перенос точки
Каждое из приведенных выше преобразований имеет простой и наглядный геометрический смысл (геометрическим смыслом наделены и постоянные числа, входящие в приведенные формулы).
Как доказывается в курсе аналитической геометрии, любое преобразование вида (*) всегда можно представить как последовательное использование (суперпозицию) простейших преобразований вида А, Б, В и Г (или части этих преобразований).
Таким образом, справедливо следующее важное свойство аффинных преобразований плоскости: любое отображение вида (*) можно описать при помощи отображений, задаваемых формулами для случаев А, Б, В и Г.
Для эффективного использования этих формул в задачах компьютерной графики более удобной является их матричная запись. Матрицы, соответствующие случаям А, Б и В, строятся легко и имеют следующий вид:
Однако для решения задач компьютерной графики весьма желательно охватить матричным подходом все четыре простейших преобразования (в том числе и перенос), а значит, и общее аффинное преобразование.
Этого можно достичь, например, так: перейти к описанию произвольной точки на плоскости, не упорядоченной парой чисел, как это было сделано выше, а упорядоченной тройкой чисел.
Пусть М — произвольная точка на плоскости с координатами х и у, вытисненными относительно заданной прямолинейной координатной системы. Однородными координатами этой точки называется любая тройка одновременно не равных нулю чисел X], Х2 хз, связанных с заданными числами х и у следующими соотношениями:
При решении задач компьютерной графики однородные координаты обычно вводятся так: произвольной точке М (х, у) на плоскости ставится в соответствие точка М*(х, у, 1) в пространстве (рис. 4.31).
Заметим, что производная точка на прямой, соединяющей начало координат, точку О(0, 0, 0) с точкой М*(х, у, 1), может быть задана тройкой чисел вида (Ах, hy, А). Будем считать, что
Рис. 4.31. Преобразование координат точки на плоскости в однородные координаты
zt
Вектор с координатами hx, hy, h является направляющим вектором прямой, соединяющей точки О(0, 0, 0) и М*(х, у, 1). Эта прямая пересекает плоскость г = 1 в точке (х, у, 1), которая однозначно определяет точку (х, у) координатной плоскости ху. Тем самым между произвольной точкой с координатами (х, у) и множеством троек чисел вида (hx, hy, A), h * 0, устанавливается (взаимно однозначное) соответствие, позволяющее считать числа hx, hy, h новыми координатами этой точки.
В проективной геометрии для однородных координат принято следующее обозначение: х : у : 1 или более общо: х\ : xi :хз (напомним, что здесь непременно требуется, чтобы числа х\, хг, хз одновременно в нуль не обращались).
Применение однородных координат оказывается удобным уже при решении простейших задач.
Рассмотрим, например, вопросы, связанные с изменением масштаба. Если устройство отображения работает только с целыми числами (или если необходимо работать только с целыми числами), то для произвольного значения h (например, h — 1) точку с однородными координатами (0,5 0,1 2,5) представить нельзя. Однако при разумном выборе h можно добиться того, чтобы координаты этой точки были целыми числами. В частности, при h = 10 для рассматриваемого примера имеем: (5 1 25).
Рассмотрим другой случай. Чтобы результаты преобразования не приводили к арифметическому переполнению, для точки с координатами (80 000 40 000 1000) можно взять, например, h = 0,001. В результате получим: (80 40 1).
Приведенные примеры показывают полезность использования однородных координат при проведении расчетов. Однако основной целью введения однородных координат в компьютерной графике является их несомненное удобство в применении к геометрическим преобразованиям.
При помощи троек однородных координат и матриц третьего порядка можно описать любое аффинное преобразование плоскости.
В самом деле, считая h — \ сравним две записи: помеченную символом * и матричную:
Нетрудно заметить, что после перемножения выражений, стоящих в правой части последнего соотношения, мы получим обе формулы (*) и тождество 1 = 1.
Тем самым сравниваемые записи можно считать равносильными.
Элементы произвольной матрицы аффинного преобразования не несут в себе явно выраженного геометрического смысла.
Поэтому чтобы реализовать то или иное отображение, т.е. найти элементы соответствующей матрицы по заданному геометрическому описанию, необходимы специальные приемы. Обычно построение этой матрицы в соответствии со сложностью рассматриваемой задачи и с описанными выше частными случаями разбивают на несколько этапов.На каждом этапе ищется матрица, соответствующая тому или иному из выщеленнык выше случаев А, Б, В и Г, обладающих хорошо выраженными геометрическими свойствами.
Выпишем соответствующие матрицы третьего порядка.
А. Матрица вращения (rotation):
Г. Матрица переноса (translation):
В. Матрица отражения (reflection):
Б. Матрица растяжения (сжатия) (dilatation):
Эти матрицы трактуются как составляющие общей матрицы, преобразующей исходную матрицу А графического объекта в матрицу А* преобразованного объекта.
Общая матрица преобразования при известных у, X, а, Р и ц получается перемножением матриц простейших преобразований V=[R\[D\\M\[T\.
Основные свойства матричных преобразований при переходе к трехмерному (3D) преобразованию сохраняются, однако более сложной становится операция вращения, требующая задания оси вращения. Напомним, что однородное представление трехмерной точки имеет вид: (hx, hy, hz, К).
Наличие точных математических моделей графических объектов позволяет относительно легко отображать их на экране монитора, а вычисленные матрицы преобразований дают возможность манипуляции этими объектами на экране как в статике, так и в динамике.
Но далеко не всегда удается получить точное функциональное описание объекта. Чаще всего оказывается возможным вычислить только ряд точек графической фигуры. И тогда возникает задача плавного соединения (а не прямыми) этих точек для восстановления на экране изображения воспроизводимой фигуры. Эта задача в компьютерной графике решается с помощью геометрических сплайнов, или сплайн-функций [38].