logo search
Инж

4.1.1.2. Преобразование прямых линий

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

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

Рис. 4.2

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

, (4.7)

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

(4.8)

и

. (4.9)

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

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

(4.10)

где компоненты [L*] представляют собой преобразование координаты векторов [А*] и [В*]. Результат преобразования А в А* и В в В* показан на рис. 4.2, где х и у – это исходные оси координат, а х* и у* – преобразованные оси. Из рис. 4.2 видно, что преобразование сдвига [Т] увеличивает длину отрезка и изменяет его направление; что (22)-матрица преобразует прямую линию у = х + 1, проходящую между точками А и В в другую прямую , которая проходит между точками А* и В*. Фактически с помощью (22)-матрицы осуществляется преобразование любой прямой в другую прямую. Все точки преобразованной линии непосредственно соответствуют всем точкам исходной линии. Это достаточно очевидно для конечных точек линии. Рассмотрим теперь преобразование средней точки прямой линии АВ. Допустим, что

[A] = [x1 y1], [B] = [x2 y2] и .

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

. (4.11)

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

(4.12)

.

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

(4.13)

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

[xm ym] = [(x1+x2)/2 (y1+y2)/2]. (4.14)

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

(4.15)

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