Геометрические преобразования

 

·                  Двумерные преобразования

·                  Пространственные преобразования

·                  Матрицы двумерных и пространственных преобразований

 

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

Вспомним основные матричные операции:

Сложение и разность двух матриц. Результатом этой операции является матрица элементы которой определяются по следующей формуле:

где каждый элемент матрицы Сi,j представляет собой сумму или разность соответствующих элементов матриц Аi,j и Вi,j.

Умножение матрицы на скаляр осуществляется по тому же принципу:

В результате каждый элемент матрицы Сi,j представляет собой произведение соответствующих элементов матриц Аi,j на скаляр n.

Иная ситуация возникает при перемножении матриц. Данная операция осуществляется по следующему правилу:

где n- размерность матриц (количество строк и столбиков).  Т.е. У первой матрицы берется строка, второй матрицы столбик, эти элементы попарно перемножаются и складываются. В результате получаем элемент первой строки и первого столбика результирующей матрицы  С1,1. И т.д. Важным свойством данной операции является то, что произведение матриц не перестановочно!!!  Т.е.

 

 

Двумерные преобразования

 

Точка P на плоскости однозначно определяется двумя своими координатами (x, y). В соответствие ей можно поставить матрицу-строку размером 1´2 вида  (сначала будем использовать именно такое отображение точки). Следует заметить также, что точка может задаваться и соответствующей матрицей-столбцом размером 2´1. В любом случае матрицу, определяющую положение точки, часто называют координатным вектором или вектором положения.

Большинство из перечисленных выше элементарных преобразований по отношению к точке можно реализовать путем умножения матрицы  на матрицу общего преобразования размером 2´2 вида :

 

где ,  – координаты точки P*, являющейся результатом преобразования точки P, причем .

Рассмотрим некоторые специальные случаи.

Умножение исходной матрицы на единичную 2´2 матрицу (a = d = 1, b = c = 0)

 

 

не приводит к каким-либо изменениям; поэтому подобную единичную матрицу часто называют матрицей тождественного преобразования.

В случае d = 1, b = c = 0

 

 

– происходит так называемое локальное масштабирование (растяжение при |a| > 1 или сжатие при 0 < |a| < 1) координаты x () без изменения координаты y; если при этом a < 0, кроме масштабирования происходит отражение относительно оси y.

В аналогичном случае, когда a = 1, b = c = 0,

 

 

– происходит локальное масштабирование (растяжение при           |d | > 1 или сжатие при 0 < |d | < 1) координаты y () без изменения координаты x; при d < 0 масштабирование сопровождается отражением относительно оси x.

В общем случае, когда b = c = 0,

 

 

– наблюдается локальное масштабирование обеих координат; кроме того, при a < 0, d > 0 происходит отражение относительно оси y, при a > 0, d < 0 – отражение относительно оси x, при a < 0, d < 0 – отражение относительно начала координат.

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

Посмотрим теперь, на что влияют недиагональные члены этой матрицы.

Пусть a = d = 1, c = 0. Тогда

 

 

– координата x*= x осталась неизменной, а координата y* стала линейно зависеть от исходной координаты x; произошел так называемый сдвиг вдоль оси y пропорционально координате x (на bx).

Аналогично, когда a = d = 1, b = 0,

 

 

– происходит сдвиг вдоль оси x пропорционально координате y (на cy).

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

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

Рассмотрим теперь, как осуществить поворот на произвольный угол q  на примере преобразования точки P (x, y). Вектор положения данной точки равен

 

,

 

где r – длина вектора, а j – угол наклона вектора по отношению к оси x.

Вектор положения точки P* (x*, y*), полученной из исходной точки путем ее поворота относительно начала координат на положительный угол q , равен соответственно

 

 

или, после преобразований –

 

 

.

 

Таким образом, преобразованная точка имеет координаты

,   .

В матричном виде операцию преобразования можно записать так:

 

.

 

Другими словами, поворот относительно начала координат на произвольный угол q задается матрицей преобразования

 

 .

 

Ранее было замечено, что использование двумерных координатных векторов, отображающих точки на плоскости, в совокупности с матрицей общего преобразования  размером 2´2 накладывает ряд ограничений на модификацию объектов. В первую очередь, эти ограничения обусловлены невозможностью применения преобразования координат. Существенно расширить возможности модификации позволяет использование однородных координат для отображения точек и, соответственно, матрицы общего преобразования  размером 3´3.

Однородные координаты точки P (x, y) на физической плоскости xy представляют собой тройку чисел x¢, y¢, h; первые два из них связаны с реальными координатами точки соотношениями        x¢ = hx и y¢ = hy, а h – это некоторое вещественное число (отметим, что случай h = 0 является особым и будет рассмотрен ниже). Однородным координатам точки можно поставить в соответствие трехмерный координатный вектор (вектор положения) – матрицу размером 1´3 вида . Очевидно, что при таком подходе каждую точку можно связать с бесконечным множеством наборов однородных координат и, соответственно, координатных векторов вида . Вместе с тем, для точки имеется лишь один набор однородных координат со значением h = 1; ему соответствует вектор положения вида . В компьютерной графике для отображения точек (за исключением точек бесконечности, см. далее) используются координатные векторы  именно такого вида.

Применяя к вектору положения исходной точки   матрицу общего преобразования размером 3´3 вида ,

получаем:

 

.

 

 

Данный результат практически идентичен тому, который был получен при умножении координатного вектора  на матрицу общего преобразования размером 2´2 (см. выше). Выражения для координат  и  преобразованной точки в обоих случаях полностью совпадают. Следовательно, использование однородных координат совместно с матрицей общего преобразования вида  

 

позволяет осуществить все те преобразования точек, отрезков и многоугольников, о которых шла речь выше (это и происходит при реальной обработке графических объектов). Задавая соответствующие значения a, b, c и d, можно реализовать тождественное преобразование, операции локального масштабирования, отражения, сдвига и поворота, аналогичные уже рассмотренным. Однако, все они, по-прежнему, будут осуществляться относительно точки начала координат.

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

 

 

 

 

полученный результат можно трактовать двояко: с одной стороны, можно считать, что операция привела к перемещению исходной точки вдоль осей x и y соответственно на m и n в исходной системе координат x0y; с другой стороны, можно полагать, что точка осталась на месте, а произошло преобразование координат – новая система координат x*0*y* сдвинута относительно исходной на m вдоль оси x и на n вдоль оси y.

В любом случае, выяснилось, что элементы m и n матрицы преобразования размером 3´3 являются коэффициентами перемещения в направлениях x и y соответственно. И не менее важный вывод из приведенного примера – теперь каждая точка плоскости, в том числе начало координат, может быть преобразована.

Матрицу общего преобразования для трехмерных координатных векторов, используемых при двумерных преобразованиях, в общем виде можно представить так:

 

 

.

 

 

Ранее было установлено, как входящие в нее коэффициенты a, b, c, d, m и n влияют на соответствующие преобразования. Остальным трем коэффициентам в предыдущих разделах присваивались вполне определенные значения ( p = q = 0, s = 1), и они, по сути дела, не принимали участия в преобразованиях. Координатные векторы преобразованных точек всегда имели вид , т.е. число h тождественно принимало единичное значение. Геометрически это можно трактовать как ограничение преобразований физической плоскостью h = 1 в трехмерном пространстве xyh. Вместе с тем, при других значениях коэффициентов p, q и s они также могут участвовать в преобразованиях.

Рассмотрим сначала, к какому эффекту приведут ненулевые значения коэффициентов p и q. Запишем следующее выражение:

 

 

;

 

 

данное преобразование привело к тому, что точка (x, y), которой изначально ставился в соответствие координатный вектор вида , преобразована в точку, которой ставится в соответствие координатный вектор вида , где x¢ = x, y¢ = y, ; с геометрической точки зрения полученный результат интерпретируется следующим образом: в трехмерном пространстве xyh конец P (рис.2.12) координатного вектора исходной точки принадлежит плоскости h = 1, а конец P¢ координатного вектора преобразованной точки – плоскости  (причем в данном конкретном случае две другие компоненты однородных координат и соответствующего координатного вектора остаются неизменными).

Однако, как отмечалось ранее, в компьютерной графике используют векторы положения только вида . Поэтому, когда какое-либо преобразование приводит к результату с h ≠ 1 (и, кстати, с h ≠ 0), этот результат нормализуют, т.е. приводят к требуемому виду путем деления всех трех составляющих однородных координат на величину h. В рассматриваемой задаче окончательный результат преобразования будет иметь вид

 

 

;

 

 

геометрически такой же результат, а именно точку P*, можно получить путем проецирования точки P¢, принадлежащей плоскости h ≠ 1, на плоскость h = 1 по лучу, соединяющему точку P¢ с началом координат.

 

Рассмотрим следующее преобразование:

 

,

 

 

где x¢ = x, y¢ = y, h = s; нормализуем полученный результат:

 

;

 

 

произошло пропорциональное масштабирование координат исходной точки: если s > 1 – равномерное сжатие, если 0 < s < 1 – равномерное растяжение.

Рассмотрев действие всех коэффициентов 3´3 матрицы общего преобразования, сделаем следующее заключение. Условно ее можно разбить на четыре части (подматрицы) –

 

;

 

 

коэффициенты каждой подматрицы связаны с преобразованиями определенного типа, а именно: коэффициенты левой верхней 2´2 подматрицы (a, b, c и d ) – с операциями локального масштабирования, сдвига, отражения и поворота, коэффициенты левой нижней 1´2 подматрицы (m и n) – с перемещениями вдоль координатных осей, коэффициенты правой верхней 2´1 подматрицы ( p и q) – с проецированием в однородных координатах, правая нижняя 1´1 подматрица (коэффициент s) – задает общее масштабирование.

Матрицы двумерных преобразований представлены в приложении

 

Пространственные преобразования

Пространственные преобразования графических объектов так же, как и двумерные преобразования (см. предыдущую тему), реализуются с использованием однородных координат. Каждая точка с конечными координатами P (x, y, z) в пространстве xyz отображается содержащим однородные координаты этой точки четырехмерным координатным вектором (вектором положения) – матрицей  размером 1´4 вида .

При пространственных преобразованиях применяют матрицу общего преобразования размером 4´4. Обобщенно ее можно представить так:

 

 

;

 

 

причем (по аналогии с двумерными преобразованиями) коэффициенты левой верхней 3´3 подматрицы (a, b, c, d, e, f, g, i и j ) связаны с операциями локального масштабирования, сдвига, отражения и поворота, коэффициенты левой нижней 1´3 подматрицы (l, m и n) – с перемещениями вдоль координатных осей, коэффициенты правой верхней 3´1 подматрицы ( p, q и r) – с проецированием в однородных координатах, правая нижняя 1´1 подматрица (коэффициент s) – задает общее масштабирование.

Тождественное преобразование (не приводящее к изменению объекта) осуществляется единичной матрицей (матрицей тождественного преобразования). Оно сводится к следующему:

 

.

 

 

Масштабирование при пространственных преобразованиях (так же, как и при двумерных преобразованиях) задается диагональными элементами матрицы общего преобразования. Локальное масштабирование по осям x, y и z связано с коэффициентами соответственно a, e и j этой матрицы, что можно проиллюстрировать следующим примером преобразования точки:

 

,

 

 

где , , .

 

 

Симметричные отражения графических объектов относительно координатных плоскостей yz (x = 0), xz ( y = 0) и xy                          (z = 0) можно осуществить матрицами преобразования соответственно

 

,  и .

 

 

Симметричные отражения относительно координатных осей x, y и z (повороты вокруг этих осей на 180°) реализуются с использованием соответственно матриц преобразования

 

,  и .

 

 

Симметричному отражению относительно точки начала координат будет соответствовать матрица преобразования вида

 

 

 

Общее масштабирование можно осуществить, воспользовавшись четвертым диагональным элементом матрицы общего преобразования, т.е. коэффициентом s (при условии, конечно, что s ≠ 1 и s ≠ 0). Приведем пример подобного преобразования точки:

 

;

 

 

окончательный результат после нормализации –

 

;

 

 

происходит пропорциональное (равномерное) масштабирование координат исходной точки: если s > 1 – сжатие, если 0 < s < 1 – растяжение.

Сдвиги при пространственных преобразованиях обусловливают недиагональные элементы левой верхней 3´3 подматрицы матрицы общего преобразования. Рассмотрим следующее преобразование точки:

 

;

 

 

произошли сдвиги: вдоль оси x пропорционально координатам       y (на dy) и z (на gz), вдоль оси y пропорционально координатам         x (на bx) и z (на iz), вдоль оси z пропорционально координатам          x (на сx) и y (на fy).

Повороты вокруг координатных осей x, y и z в правосторонней системе координат на произвольные углы q, f и y осуществляются матрицами преобразования соответственно

 

,  и .

 

 

Преобразование вида

 

 

 

 

 

реализует перемещения: вдоль оси x на l, вдоль оси y на m, вдоль оси z на n.

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

 

 

 

,

 

 

где ; если  и , окончательный результат преобразования (после нормализации) будет следующим:

 

 

 

 

.

 

 

Матрицы пространственных преобразований представлены в приложении

 

Матрицы двумерных и пространственных преобразований

Матрицы простых двумерных преобразований

 

Локальное масштабирование:

в a раз по координатной оси x,

в d раз по координатной оси y

Симметричное отражение относительно координатной оси x

 

Симметричное отражение относительно координатной оси y

 

Симметричное отражение относительно точки начала координат (поворот вокруг точки начала координат на 180°)

 

Сдвиги:

вдоль координатной оси x на cy,

вдоль координатной оси y на bx

 

Поворот на произвольный угол q      относительно точки начала координат

 

Отражение относительно прямой                у = x

 

Отражение относительно прямой                         у = – x

 

 

Перемещения:

вдоль координатной оси x на m,

вдоль координатной оси y на n

Проецирование в однородных координатах (если  и , результат необходимо нормализовать путем деления всех однородных координат на h)

Общее масштабирование в  раз (если , и  результат необходимо нормализовать путем деления всех однородных координат на h)

 

 

 

Матрицы простых пространственных преобразований

 

Локальное масштабирование:

в a раз по координатной оси x,

в e раз по координатной оси y,

в j раз по координатной оси z

Симметричное отражение относительно координатной плоскости yz (x = 0)

 

 

Симметричное отражение относительно координатной плоскости xz ( y = 0)

 

Симметричное отражение относительно координатной плоскости xy (z = 0)

 

 

Симметричное отражение относительно координатной оси x (поворот вокруг оси x на 180°)

 

Симметричное отражение относительно координатной оси y (поворот вокруг оси y на 180°)

 

Симметричное отражение относительно координатной оси z (поворот вокруг оси z на 180°)

 

 

Симметричное отражение относительно точки начала координат

 

 

Сдвиги:

вдоль оси x на dy + gz,

вдоль оси y на bx + iz,

вдоль оси z на cx + fy

 

 

Поворот вокруг координатной оси x на произвольный угол q

 

 

 

Поворот вокруг координатной оси y на произвольный угол f

 

 

Поворот вокруг координатной оси z на произвольный угол y

 

 

Перемещения:

вдоль координатной оси x на l,

вдоль координатной оси y на m,

вдоль координатной оси z на n

Проецирование в однородных координатах (если  и , результат необходимо нормализовать путем деления всех однородных координат на h)

 

Общее масштабирование в  раз (если , и  результат необходимо нормализовать путем деления всех однородных координат на h)

 

Параллельное ортографическое проецирование на координатную плоскость xy (z = 0)