Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КГ Математический аппарат.doc
Скачиваний:
34
Добавлен:
12.03.2015
Размер:
1.3 Mб
Скачать
  1. Двумерные преобразования

    1. ВВЕДЕНИЕ

Изучение математического аппарата, лежащего в основе машинной графики, мы начнем с рассмотрения способов вывода и преобразования точек и линий. Эти способы наряду с соответствующими алгоритмами рисования используются для изображения объектов или визуализации графической информации. Возможность проводить преобразования точек и линий является фундаментом машинной графики. Нарисованный объект может быть представлен в нужном масштабе, повернут, перемещен, преобразован или модифицирован в соответствии с требованиями решаемой задачи. Все эти манипуляции с изображением можно выполнить, используя математический аппарат, изложенный в данной главе.

    1. ИЗОБРАЖЕНИЕ ТОЧЕК

Точка представляется на плоскости двумя своими координатами, которые определяются как элементы матрицы размером 1х2 [х у]. В трехмерном пространстве используется матрица размером 1х3 [х у z].

Иначе говоря, точка может задаваться в виде вектора-столбца в двумерном пространстве илив виде в трехмерном. Строку [х у] или столбец часто называют координатным вектором. Здесь для формирования такого вектора будем использовать матрицу-строку, т. е. множество точек, каждая из которых определяет координатный вектор в некоторой системе измерения. Данное множество хранится в компьютере в виде матрицы или массива чисел. Положением точек можно управлять путем манипулирования соответствующей матрицей. Линии, соединяющие точки, формируют отрезки, кривые и картинки.

    1. ПРЕОБРАЗОВАНИЯ И МАТРИЦЫ

В качестве элементов матрицы могут фигурировать различные величины: числа, сетки или коэффициенты системы уравнений. Правила в матричной алгебре определяют допустимые операции над элементами. Многие физические задачи удобно выражаются в матричном представлении. Для моделей физических систем задача обычно ставится следующим образом: даны матрицы [A] и [B], найти результирующую матрицу [Т], такую, что [А][Т] = [В]. В этом случае решением является матрица [T] = [A]-1[В], где [А]-1—матрица, обратная к квадратной матрице [А].

В то же время матрицу [Т] можно интерпретировать как геометрический оператор. В этом случае для выполнения геометрического преобразования точек, представленных векторами положений в матрице [А], используется умножение матриц. Предположим, что матрицы [А] и [T] известны. Требуется определить элементы матрицы [В]. Представление [T] как геометрического оператора является основой математических преобразований, используемых в машинной графике.

    1. ПРЕОБРАЗОВАНИЕ ТОЧЕК

Рассмотрим результаты умножения матрицы [x y], содержащей координаты точки Р, на матрицу общего преобразования размером 2x2:

(2-1)

Данная запись означает, что исходные координаты точки х и у преобразуются в х и y,где х=ах + су, у =bx + dy. Представляют интерес значения х, у —координаты результирующей, преобразованной точки Р. Рассмотрим некоторые специальные случаи.

При а = d = 1 и с = b = 0 преобразование сведется к единичной матрице

(2-2)

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

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

, (2-3)

где х = ах — результат масштабирования координаты x. Эффект такого преобразования показан на рис. 2-1а.

Рассмотрим теперь еще случай b = с = 0, т.е.

. (2-4)

Данное преобразование вызывает изменение обеих координат х и у вектора Р (рис. 2-1b). Если аd, то координаты масштабируются различным образом. При a=d> 1 происходит растяжение вектора Р или масштабирование координат. Если 0 < a = d < 1, то имеет место сжатие.

Если значение a или d отрицательное, то вектор отражается относительно координатных осей или относительно плоскости. Чтобы убедиться в этом, возьмем b = с = 0, d = 1 и a , тогда

(2-5)

и в результате получаем симметричное отражение относительно оси у (рис. 2-1с).

Если b = с = 0, а = 1, d , то выполняется симметричное отражение относительнооси х.

Если b = с = 0, а = d < 0, то происходит отражение относительно начала координат, это показано на рис. 2-1d, где а = - 1, d = 1. Заметим, что обе операции отражения и масштабирования зависят только от диагональных членов матрицы преобразования.

Рассмотрим теперь случай с недиагональными членами. Возьмем сначала значения a = d = l, c = 0, тогда

(2-6)

Заметим, что координата х точки Р осталась неизменной, тогда как координата y* линейно зависит от исходных координат. Данное преобразование называется сдвигом (рис. 2-1е). Аналогично, в случае, когда a = d = l, b = 0, преобразование приведет к сдвигу пропорционально координате у (рис. 2-1f). Таким образом, видно, что недиагональные члены матрицы преобразования создают эффект сдвига координат вектора точки Р.

Прежде чем закончить с преобразованием точек, разберем действие общего преобразования, заданного выражением (2-1), когда начальный вектор лежит в точке начала координат, т.е.

или, в случае начала координат,

.

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

    1. ПРЕОБРАЗОВАНИЕ ПРЯМЫХ ЛИНИЙ

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

На рис. 2-2 изображена прямая линия, проходящая между двумя точками A и В. Положение векторов точек А и В задается следующим образом: [А] = [0 1] и [B] = [2 3].

Рассмотрим матрицу преобразования

(2-7)

которая, как следует из предыдущего обсуждения, приводит к сдвигу изображения. Преобразование векторов А и В с помощью матрицы [Т] дает новое положение векторов A и В

(2-8)

и

(2-9)

Таким образом, результирующие координаты для точки А - это х = 3 и у = 1. Аналогично, В — новая точка с координатами x = 11, у = 7. В более компактном виде отрезок АВ может быть представлен матрицей размером (2x2):

Умножим эту матрицу на [T]:

, (2-10)

где компоненты [L] представляют собой преобразование координат векторов [A*] и [B*]. Результат преобразования А в А и В в В показан на рис. 2-2, где х и y это исходные оси координат, а х и y — преобразованные оси. Из рисунка видно, что преобразование сдвига [T] увеличивает длину отрезка и изменяет его направление.

    1. ПРЕОБРАЗОВАНИЕ СРЕДНЕЙ ТОЧКИ

На рис. 2-2 видно, что (2 х 2)-матрица преобразует прямую линию у = х + 1, проходящую между точками А и В в другую прямую ,которая проходит между точками А и В. Фактически с помощью (2 х 2)-матрицы осуществляется преобразование любой прямой в другую прямую. Все точки преобразованной линии непосредственно соответствуют всем точкам исходной линии. Это достаточно очевидно для конечных точек линии. Рассмотрим теперь преобразование средней точки прямой линии АВ. Допустим, что

.

Преобразуем одновременно две крайние точки:

(2-11)

итак, конечные точки преобразованной линии АВ имеют следующие координаты

(2-12)

Средняя точка отрезка АВ выражается через преобразованные конечные точки

. (2-13)

Возвращаясь к исходной линии AB, можно определить среднюю точку следующим образом:

(2-14)

Применив матрицу преобразования [Т] к средней точке линии АВ, получаем:

(2-15)

Из сравнения выражений (2-13) и (2-15) видно, что они одинаковы, и поэтому средняя точка линии АВ преобразуется в среднюю точку линии АВ. Такой метод можно применить и к любым другим отрезкам разделенной линии. Таким образом, при преобразовании путем умножения на матрицу гарантируется соответствие всех точек линии АВ и АВ.