Новосибирский Государственный Технический Университет. Факультет автоматики и вычислительной техники Кафедра вычислительной техники (специальность 220100). учебное пособие

Вид материалаУчебное пособие
0.1.2  Двумерные преобразования в однородных координатах
Декартовые точки с бесконечными координатами
Параллельные прямые
Подобный материал:
1   2   3   4   5   6   7   8   9   ...   44

0.1.2  Двумерные преобразования в однородных координатах


Как видно из (2), (4) и (6) двумерные преобразования имеют различный вид. Сдвиг реализуется сложением, а масштабирование и поворот - умножением. Это различие затрудняет формирование суммарного преобразования и устраняется использованием двумерных однородных координат точки, имеющих вид:


[ x y w ].



Здесь w - произвольный множитель не равный 0.

Двумерные декартовые координаты точки получаются из однородных делением на множитель w:


X = x / w, Y = y / w.



(0.1.8)

Однородные координаты можно представить как промасштабированные с коэффициентом w значения двумерных координат, расположенные в плоскости с Z = w.

В силу произвольности значения w в однородных координатах не существует единственного представления точки, заданной в декартовых координатах.

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

Для сдвига












xn




yn




wn












=








x




y




w












·












1




0




0




0




1




0




Tx




Ty




1
















.



(0.1.9)

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












xn




yn




wn












=








x




y




w












·












Sx




0




0




0




Sy




0




0




0




1
















.



(0.1.10)

Для поворота












xn




yn




wn












=








x




y




w












·












cos




sin




0




-sin




cos




0




0




0




1
















.



(0.1.11)

Как видно из (9) - (11), wn = w, а матрица преобразования для двумерных однородных координат в общем случае имеет вид:























A




B




D




E
















P




Q




























L




M












S



















,



(0.1.12)

где элементы A,   B,   D и E определяют изменение масштаба, поворот и смещение, а L и M определяют сдвиг. Покажем, что элемент S определяет общее изменение масштаба, а элементы P и Q определяют проецирование.

Рассмотрим вначале для этого преобразование












xn




yn




h












=








x




y




1












·












1




0




0




0




1




0




0




0




S
















.



Легко видеть, что xn = x,   yn = y,   h = S. Таким образом двумерные декартовые координаты преобразованной точки


Xn = xn / h = x / S, Yn = yn / h = y / S,



т.е. такое преобразование задает изменение масштаба вектора положения точки. При S < 1 выполняется уменьшение, а при S > 1 - увеличение.

Для уяснения смысла третьего столбца матрицы преобразований (12) выполним преобразование












xn




yn




h












=








x




y




1












·












1




0




P




0




1




Q




0




0




1
















=








x




y




(Px+Qy+1)












.



Здесь xn = x,   yn = y,   h = Px + Qy + 1, т.е. переменная h, которая определяет плоскость, содержащую преобразованные точки, представленные в однородных координатах, образует теперь уравнение плоскости в трехмерном пространстве:


h = Px + Qy + 1.



(0.1.13)

Получим результирующие двумерные декартовые координаты Xn, Yn для преобразованной точки


Xn =

x

Px + Qy + 1

, Yn =

y

Px + Qy + 1

.



Это соответствует вычислению их в плоскости Z = 1, т.е. проецированию из плоскости (13) в плоскость Z = 1. Легко показать, что центр проецирования находится в начале координат. Рассмотрим для этого параметрические уравнения прямой, проходящей через точки (X0, Y0, 1) и (X, Y, (MX+NY+1) ):






X(t) =




X0




+




(X-X0) ×t




=




x/h




+




(x - x/h) ×t




Y(t) =




Y0




+




(Y-Y0) ×t




=




y/h




+




(y - y/h) ×t




Z(t) =




1




+




(MX+NY) ×t




=




1




+




(h - 1) ×t






.



(0.1.14)

Из условия X(t) = X0 = 0 находим t = 1/(1 - h), подставляя это значение t в выражения для Y(t) и Z(t), получим:


Y0 = y/h + (y - y/h)/(1-h) = y/h - y/h = 0.







Z0 = 1 + (h-1)/(1-h) = 0.



Итак, показано, что элементы P и Q матрицы (12) определяют проецирование с центром проекции в начале координат.

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

Декартовые точки с бесконечными координатами


Рассмотрим в декартовой системе линию, проходящую через начало координат и точку (X,Y). Однородные координаты этой точки - (x,y,h) = (hX, hY, h), где h имеет произвольное значение. Предел отношения x/y при h стремящимся к 0 равен X/Y, но при этом декартовые координаты стремятся к бесконечности. Таким образом, точка с однородными координатами


(x, y, 0)



(0.1.15)

задает в декартовой системе точку на бесконечности для рассмотренной прямой. В частности, точка с однородными координатами (1, 0, 0) задает бесконечную точку на декартовой оси X, а точка с однородными координатами (0, 1, 0) задает бесконечную точку на декартовой оси Y.

Параллельные прямые


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

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






A1 ·X + B1 ·Y + C1 = 0




A2 ·X + B2 ·Y + C2 = 0.











(0.1.16)

Решая эту систему относительно X и Y, найдем координаты точки пересечения


X0 =

C1 ·B2-C2 ·B1

A1 ·B2-A2 ·B1

.







Y0 =

A1 ·C2-A2 ·C1

A1 ·B2-A2 ·B1

.



Запишем результат в однородных координатах












C1 ·B2-C2 ·B1

A1 ·B2-A2 ·B1



A1 ·C2-A2 ·C1

A1 ·B2-A2 ·B1

,  1





.



В силу произвольности масштабного множителя, умножим значения координат на (A1 ·B2 - A2 ·B1)


(C1 ·B2-C2 ·B1,  A1 ·C2-A2 ·C1,  A1 ·B2-A2 ·B1).



Если прямые параллельны, то определитель системы (16) - (A1 ·B2-A2 ·B1) равен нулю. Учитывая это и обозначая x0 = (C1 ·B2-C2 ·B1), y0 = (A1 ·C2-A2 ·C1), получим координату пересечения параллельных прямых в однородной системе координат


( x0, y0, 0 ).



При этом точка пересечения лежит на прямой -y0 ·x + x0 ·y = 0 на бесконечности.