Однородные координаты и матричное представление двумерных преобразований

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

Двумерный вектор (x, y) в однородных координатах записывается в виде (X, Y, W), где W ¹0. Число W называется масштабным множителем.

При этом если для точки задано ее представление в однородных координатах Р(X,Y,W), то можно найти ее двумерные декартовы координаты как x = X/W и y = Y/W.

Рис.8. Однородные двумерные координаты точки

Геометрический смысл однородных координат заключается в следующем (рис.8). Произвольная точка на прямой, соединяющей начало координат, точку О(0,0,0), с точкой Р'(x,y,1), может быть задана тройкой чисел вида (W×x,W×y,W). Вектор с координатами W×x,W×y,W является направляющим вектором прямой, соединяющей точки О(0,0,0) и Р'(x,y,1). Эта прямая пересекает плоскость z = 1 в точке (x,y,1), которая однозначно определяет точку (x,y) координатной плоскости x,y.

Тем самым между произвольной точкой с координатами (x, y) и множеством троек чисел вида (W×x,W×y,W), W ¹ 0 устанавливается взаимно однозначное соответствие, позволяющее считать числа W×x,W×y,W новыми координатами этой точки. Однородные координаты можно представить как вложение промасштабированной с коэффициентом W двумерной плоскости в плоскость z = W (здесь z=1) в трехмерном пространстве.

Рассмотрим некоторые свойства однородных координат. Некоторые точки, неопределенные в n-мерном пространстве, становятся вполне определенными при переходе к однородным координатам. Например, однородный вектор (0,0,1,0) в трехмерном пространстве соответствует бесконечно удаленной точке z = ¥. Поскольку в однородных координатах эту точку можно представить в виде (0,0,1,e) при e®0, то в трехмерном пространстве это соответствует точке (0,0,1/e).

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

Если устройство отображения работает только с целыми числами (или если необходимо работать только с целыми числами), то для произвольного значения W (например, W=1) точку с однородными координатами (0.5 0.1 2.5) представить нельзя. Однако при разумном выборе W можно добиться того, чтобы координаты этой точки были целыми числами. В частности, при W = 10 для рассматриваемого примера имеем (5 1 25).

Другой случай. Чтобы результаты преобразования не приводили к арифметическому переполнению, для точки с координатами (80000 40000 1000) можно взять, например, W=0.001. В результате получим (80 40 1).

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

Теперь точки двумерного пространства будут описываться трехэлементными вектор строками, поэтому и матрицы преобразований, на которые будет умножаться вектор точки, будут иметь размеры 3´3. Запишем матричное преобразование операции переноса для однородных координат:

(9)

или

, (10)

где

.

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

Р' = Р × T(Dx, Dy), Р'' = Р' × T(D'x, D'y),

Подставив первое уравнение во второе получаем

Р'' = Р × T(Dx, Dy) × T(D'x, D'y).

Матричное произведение, т.е. суммарный перенос равен произведению соответствующих матриц переноса.

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

Запишем матричный вид операции масштабирования.

(11)

Определим матрицу масштабирования

Так же, как последовательные переносы являются аддитивными, покажем, что последовательные масштабирования будут мультипликативными.

Для операции поворота матричный вид будет такой:

(12)

Обозначим матрицу поворота как

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

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

Рассмотрим, каким образом с помощью композиции матричных преобразований можно получить одно общее результирующее преобразование. Для этого будем использовать матрицы T, S и R. С вычислительной точки зрения гораздо проще и быстрее применять матрицу уже готового преобразования вместо того, чтобы применять их последовательно одну за другой. К точке более эффективно применять одно результирующее преобразование, чем ряд преобразований друг за другом.

 

Рис. 9. Последовательность преобразований при повороте объекта вокруг точки P0 = (x0, y0) на угол a.. Первый перенос производится на вектор [–x0, –y0 ], а обратный перенос ‑ на вектор[x0, y0 ].

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

Вот эта последовательность элементарных преобразований (рис. 9):

1. Перенос, при котором точка P0 переходит в начало координат.

2. Поворот на заданный угол.

3. Перенос, при котором точка из начала координат возвращается в первоначальное положение P0.

Первый перенос производится с помощью матрицы

Поворот выполняется с помощью матрицы вращения

Окончательный перенос выполняется с помощью матрицы

Чтобы получить матрицу преобразования необходимо вычислить матричное произведение

Суммарная матрица двумерных преобразований в однородных координатах имеет вид:

где элементы A, B, D и E, отвечающие за изменение масштаба, поворот и смещение, представляют собой объединенную матрицу масштабирования и поворота, а С и F определяют суммарный сдвиг.

Вычисление преобразованных однородных координат точки P с непосредственным использованием матрицы М в выражении P×М требует 9 операций умножения и 6 операций сложения. Но так как третья однородная координата может быть выбрана равной 1, а третий столбец М содержит единственный ненулевой элемент, равный 1, то преобразование декартовых координат может быть представлено в виде:

что требует уже только 4 операции умножения и 4 операции сложения, что существенно меньше. Таким образом, несмотря на то, что матрицы 3×3 удобны при вычислении суммарного преобразования, выполнение фактического преобразования координат следует производить с учетом реальной структуры матрицы преобразования.








Дата добавления: 2016-04-14; просмотров: 1470;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.019 сек.