logo search
Компьютерная графика / МАШ_ГРАФИКА

§ 3. Однородные координаты. Матричные представления линейных преобразований

Определение. Плоскими однородными координатами точки Р(x,y) называется набор чисел (x,y,1). Пространст-венными однородными координатами точкиР(x,y,z) назы-вается набор чисел (x,y,z,1).

Однородные координаты позволяют любое линейное пре-образование координат точек представлять в виде умноже-ния их слева на некоторую матрицу. Также однородные ко-ординаты позволяют оперировать с бесконечно удаленными точками. Рассмотрим, например, точку на оси x. Ее одно-родные координаты обозначим через (а,0,0,1). Если устре-мить точку к бесконечности по оси x, то для ее однородных координат справедливо следующее:

lim (a, 0, 0, 1 )= lim a(1, 0, 0, 1/a)= lim a(1, 0, 0, 0).

a→∞ a→∞ a→∞

Таким образом, бесконечно удаленная точка по оси x может быть задана однородными координатами (1, 0, 0, 0). Аналогично могут быть заданы точки, бесконечно уда-ленные вдоль осей y, z, а, также других прямых. Гео-метрический смысл равенства нулю четвёртой координаты бесконечно удалённых точек состоит в том, что на них не действуют преобразования сдвига.

120

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

Определение. Тождественным называется преобразова-ние однородных координат точки Р(x, y, z, 1), не изме-няющее их. Матрицей данного преобразования будет еди-ничная матрица

1 0 0 0 x x

Е= 0 1 0 0 ; y = Е y .

0 0 10 z z

0 0 0 1 1 1

Определение. Пусть некоторое преобразование Т перево-дит все точки пространства (плоскости) Р в точки Р*. Обратным к Т называется преобразование Т -1, осуществ-ляющее обратный перевод точек Р* в Р.

Последовательное выполнение преобразований Т и Т -1 да-ет тождественное преобразование с матрицей Е: МТ-1МТ. Отсюда получим, что матрица обратного преобразования:

МТ -1 -1Т.

Преобразование Т -1существует только при условии:

det МТ 0.

Определение. Элементарными назовем следующие ли-нейные преобразования: сдвиг, отражение, изменение масштаба, поворот.

1). Сдвиг на вектор (x0, y0, z0). Все координаты точек увеличиваются на постоянные значения: x*=x+x0 ; y*=y+y0 ; z*= z+z0 .

В матричной форме:

x* x x0

y* = y + y0 .

z* z z0

1 1 1

121

Выразим новые координаты точек через исходные, выполняя необходимые действия над матрицами:

x* 1 0 0 0 x 0 0 0 x0 x 1 0 0 x0 x

y* = 0 1 0 0 y + 0 0 0 y0 y = 0 1 0 y0 y .

z* 0 0 1 0 z 0 0 0 z0 z 0 0 1 z0 z

1 0 0 0 1 1 0 0 0 0 1 0 0 0 1 1

При этом матрица сдвига на вектор (x0, y0, z0) имеет вид:

1 0 0 x0

Мсд(x0, y0, z0) = 0 1 0 y0 .

0 0 1 z0

0 0 0 1

Обратное преобразование соответствует сдвигу на обрат-ный вектор (-x0, -y0, -z0):

М -1сд(x0, y0, z0) = Мсд(-x0, -y0, -z0).

2). Отражение. При данном преобразовании одна или не-сколько координат точек меняют свой знак на проти-воположный. Матрицы преобразований получаются из мат-рицы Е заменой соответствующих диагональных элементов с 1 на (-1). Обратные преобразования отражения совпадают с прямыми. Рассмотрим основные виды отражений.

а) Отражение относительно плоскости -например,0yz (x=0). При этом однородные координаты точек по осям y, z оста-ются неизменны, а по x изменяют свой знак на противо-положный: Р = (x, y, z, 1) → Р* = ( - x, y, z, 1). Прямая и обратная матрицы преобразования будут следующими:

-10 0 0

Мот.(x)= М –1от.(x) = 0 1 0 0 .

0 0 1 0

0 0 0 1

122

Матрицы отражений относительно других плоскостей строятся аналогично.

б) Отражение относительно оси - например, . Сохраняют-ся однородные координаты точек по этой оси (x); по остальным ( y, z) - изменяют свой знак на противополож-ный:Р=(x, y, z, 1) →Р*=(x, - y,- z, 1). Матрицы преобразо-вания будут следующими:

1 0 0 0

Мот.(y, z) = М –1от.( y, z) = 0 –1 0 0 .

0 0 –1 0

0 0 0 1

При отражении относительно других осей матрицы стро-ятся аналогично.

в) Отражение относительно начала координат . Все одно-родные координаты точек изменяют свой знак на противо-положный:Р=(x, y, z,1) →Р* =( -x, -y, -z,1). Матрицы пре-образования будут следующими:

-1 0 0 0

Мот.(х, y, z) = М –1от.(х, y, z) = 0 –1 0 0 .

0 0 –1 0

0 0 0 1

3).Изменение масштаба.

Координаты всех точек Р(x, y, z) умножаются на фикси-рованные положительные числа a, b, c (коэффициенты изменения по осям x, y, z):

x* a∙x

P*= y* = b∙y .

z* c∙z

123

При отсутствии изменения координаты ее коэффициент изменения равен 1.

Матрица для однородных координат при изменении масштаба образуется из Е заменой соответствующих диа-гональных единиц на коэффициенты изменения:

a 0 0 0

Мим(a, b, c) = 0 b 0 0

0 0 c 0 .

0 0 0 1

Обратное преобразование соответствует изменению масш-таба с коэффициентами (1/a,1/b,1/c):

1/a 0 0 0

М -1им(a, b, c) = Мим(1/a, 1/b, 1/c) = 0 1/b 0 0 .

0 0 1/c 0

0 0 0 1

4). Поворот. z

α

0

γ β y

x

Рис.6.4

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

124

а) Матрица поворота на угол α вокруг оси z :

cos α -sin α 0 0

Мпz(α) = sin α cos α 0 0

0 0 1 0 .

0 0 0 1

б) Матрица поворота на угол β вокруг оси y:

cos β 0 sin β 0

Мпy(β) = 0 1 0 0

-sin β 0 cos β 0 .

0 0 0 1

в) Матрица поворота на угол γ вокруг оси x:

1 0 0 0

Мпx(γ) = 0 cos γ – sinγ 0

0 sin γ cos γ 0 .

0 0 0 1

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

M-1пz(α) = Мпz(-α); M-1пz(β) = Мпz(-β); M-1пy(γ) = Мпy(-γ).

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

Функции на языке Autolisp, формирующие матрицы эле-ментарных линейных преобразований, даны в Приложении:

  1. сдвиг – функция SD (результат – в списке MSD);

  2. отражение – функция MR (результат – в списке MMR);

  3. изменение масштаба – SC (результат – в списке MSC );

  4. повороты вокруг осей x, y, zRX, RY, RZ (результат, соответственно, в списках MRX, MRY, MRZ ).

125