Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2. Преобразование модели.doc
Скачиваний:
4
Добавлен:
09.11.2019
Размер:
466.43 Кб
Скачать

2. Преобразование модели

Представляют интерес преобразования двух типов:

- объект задан в некоторой системе координат (СК). Необходимо получить представление этого объекта в той же СК, но после его перемещения, или вращения, или масштабирования, или после любой комбинации таких преобразований. Будем говорить, что это преобразования моделирования или преобразование модели;

- объект задан в некоторой СК0, относительно которой задана новая СК1. Необходимо получить представление этого же объекта в СК1. Будем говорить, что это преобразование координат.

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

Кроме того, начнем с 2D и затем расширим полученные результаты на 3D.

И, наконец, будем исходить из следующего – в компьютерной графике объект любой сложности представляет собой совокупность точек (вершин). Отрезок – две точки, контур – совокупность отрезков, грань – замкнутый контур, объект 3D – совокупность граней.

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

2.1. Преобразование модели в 2d

Пусть в СК XY задана точка A0(x0, y0), как на рис. 2.1.

Выполним такие преобразования:

(2.1)

Ясно, что в общем случае и , следовательно, можно говорить о какой-то другой точке A1(x1, y1). Но можно говорить, что это та же точка A, которая в результате преобразований (2.1) переведена из положения A0(x0, y0) в положение A1(x1, y1). Условные обозначения: A – точка; A0(x0, y0) или А0 – точка A в начальном положении 0; A1(x1, y1) или А1 – точка A в положении 1, в которое она переводится преобразованием (2.1).

Если m11, m12, m21, m22, l1 и l2 – действительные (целые или вещественные), то такие преобразования называют аффинными.

Удобно использовать более компактную матричную форму записи преобразований (2.1):

– столбец;

– столбец;

– матрица 22;

– столбец.

Тогда запись преобразования 2.1 примет вид:

. (2.2)

Графически изображать преобразование (2.2) будем так:

Индексы у М01 и L01 показывают, что эти матрицы участвуют в переводе точки A из положения A0 в положение A1. Можно представить сложное перемещение точки А, состоящее из последовательности простых, например, как это показано на рис. 2.2.

Найдем параметры преобразований M02, L02 и M03, L03:

1) ;

2) ;

; ; ; (2.3)

3)

= ;

; ; . (2.4)

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

В компьютерной графике принято использовать представление точки в однородной форме. В 2D это делается так:

– точка в физических координатах,

– та же точка в однородной форме;

A0 и А0 – одна и та же точка, только в разных формах представления.

Введем понятие матрицы преобразования в однородной форме:

Это матрица преобразования в однородной форме для 2D. Далее будем применять стиль курсив для точек и матриц, когда подразумевается их представление в физических координатах, и нормальный стиль (прямое написание), когда подразумевается их представление в однородной форме.

Найдем результат такого произведения

.

Полученный результат сравним с формулой (1) и убеждаемся, что это есть представление в однородной форме точки A1. Следовательно

(2.5)

Сравним формулы (2.2) и (2.5). Это одно и тоже преобразование, но формула (2.2) – это преобразования в привычных нам физических координатах, а (2.5) – в однородной форме. Форма (2.5) предпочтительнее, ибо она более компактна.

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

На рис. 2.3 M01, M12 и M23 – матрицы преобразования в однородной форме, переводящие точку из положения A0 в положения A1, A2 и A3 соответственно.

Решим ту же задачу. Найдем преобразования, переводящие точку в A2 и A3 из A0.

– этот результат уже получен и он аналогичен формуле (2.2).

– этот результат аналогичен формуле (2.3), но он выгодно отличается компактностью.

– этот результат аналогичен формуле (2.4), здесь эффект еще более силен.

Справедливы такие формулы:

,

,

,

.

В общем случае для цепочки преобразований:

, ; (2.6)

. (2.7)

Выводы из предыдущего материала: преобразования в однородной форме обладают высокой алгоритмической привлекательностью. Матрица сложного преобразования, являющегося последовательностью составляющих его, получается простым произведением матриц, задающих составляющие преобразования (см. формулы (2.6) и (2.7)).

До сих пор не известно, какие значения следует назначать элементам матрицы M01 с тем, чтобы точка перемещалась строго определенным образом. Научимся назначать значения элементам матрицы M01 целенаправленно.

1. Пусть и , тогда

.

Т аким образом, рассматриваемая матрица M01 будучи применена к точке A0 переводит ее в положение A1 как на рис. 2.4.

Рассматриваемую матрицу целесообразно выделить как типовую элементарную матрицу, задающую преобразование смещения и обозначать ее будем T или T(l1, l2) в зависимости от того, как это требуется из контекста, т.е.

.

2. Пусть ; , тогда .

О братимся к рис. 2.5.

Если точку A0 повернуть в положительном направлении (против часовой стрелки) на угол φ, то она примет положение A1. Если элементарными средствами тригонометрии вычислить координаты x1 и y1 точки A1 на этом рисунке, то получим тот же результат для x1 и y1, который получен ранее при выполнении операции .

Таким образом, рассматриваемая матрица M01 будучи примененной к точке A0 поворачивает ее на угол φ в положительном направлении как на рис. 2.5. Эту матрицу целесообразно выделить как очередную типовую элементарную матрицу, задающую преобразование вращения, и обозначать ее будем R или R(φ), т.е.

.

3. Пусть и , тогда

= .

Здесь x – координата точки A0 масштабируется на коэффициент Sx; y – на коэффициент Sy. Рассматриваемую матрицу можно выделить как следующую типовую элементарную матрицу, задающую преобразование масштабирования, и обозначать ее будем S или S(Sx, Sy), т.е.

.

Матрица масштабирования имеет несколько полезных частных случаев.

; .

И з рис. 2.6 видно, что преобразование S(Sx = –1, Sy = 1) есть зеркальное отражение относительно оси y. Аналогично матрица осуществляет зеркальное отражение относительно оси x, матрица – относительно осей x и y одновременно.

4. Пусть и , тогда .

Здесь точка смещается вдоль оси x на величину, пропорциональную y0 и h. Рассматриваемую матрицу можно выделить как типовую элементарную, задающую преобразование сдвига в x направлении, как на рис. 2.7.

Аналогично можно создать матрицу сдвига в y направлении и тогда . На рис. 20 показано это преоб­разование.

Рассматриваемую матрицу можно выделить как типовую элементарную, осуществляющую преобразования сдвига, обозначать ее будем I или I(h), или I(g):

, .

Матрицы T, R, S и I задают элементарные преобразования, из которых может быть построено любое, как угодно сложное.

Пример. Построить матрицу вращения точки A0 на угол φ вокруг точ­ки A(ax, ay).

1) Матрицу R(φ) напрямую для этих целей использовать нельзя, ибо она осуществляет поворот вокруг начала координат.

2) Переместим точку A0 на (ax,ay) в положение A1, при этом положение A1 относительно начала координат, будет такое же, как положение A0 относительно A. Матрица такого преобразования будет M01=T(ax, –ay).

3) Повернем точку A1 на угол φ относительно начала координат. Точка примет положение A2. Матрица такого преобразования будет .

4) Переместим точку A2 на (ax, ay) в положение A3, при этом точка A3 окажется в положении, как если бы точку A0 повернули на угол φ вокруг точки A. Соответствующая матрица будет M23= T(ax, ay).

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

;

.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]