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

4.8. Несколько задач преобразования ск

Решение задачи 1 (случай 2D). Получить матрицу преобразования координат F01 такую, при применении которой окно, произвольно заданное в СК0, отображалось бы в СК1, как окно тех же размеров, но центр его совпадал бы с началом СК1 (рис. 4.20).

П ривяжем СК1 к СК0 так, чтобы начало СК1 находилось в центре окна, как на рис. 4.21.

Положение С1 в СК0

,

где ; ;

, но мы ищем F01. Она находится как обратная к F10.

, (4.3)

где ; .

Задача решена. Осуществим проверку. Точка (r, t) в СК0 при применении к ней матрицы F01 должна перейти в точку ((r – l)/2, (t – b)/2) в СК1:

.

Аналогично можно убедиться и для всех остальных вершин выделенного в СК0 окна.

Решение задачи 2 (случай 2D). Получить матрицу преобразования координат F0P такую, при которой окно, произвольно заданное в СК0, отображалось бы в СКP размерами 22 ед. и центр его совпадал бы с началом СКP (рис. 4.22).

Задачу будем решать в два шага.

На первом шаге получим матрицу преобразования F01 в СК1, как показано на рис. 4.23, где C1 центр заданного «окна», принимается за начало координат СК1.

Но такая задача уже решена (см. формулу (4.3)) и

, где ; .

 На втором шаге получим матрицу преобразования F1P и СК1 в СКP, как на рис. 4.24.

На этом шаге осуществляется масштабирование с коэффициентами , . Поэтому

.

Результирующая матрица:

; ; ; ; ;

. (4.4)

Решение задачи 3 (случай 2D). Получить матрицу преобразования координат F0W такую, которая мировое окно в МСК (СК0) преобразовывает в порт просмотра (viewport) в системе координат экранного окна Window XWYW, см. рис. 4.25.

Рис. 4.25. К постановке задачи 3

На первом шаге (рис. 4.26) введем промежуточную СК1. Начало СК1 совпадает с СК0, а заданное в СК0 окно преобразовывается до размеров порта просмотра с сохранением подобия. Пусть F01 – матрица преобразования из СКО в СК1, тогда

, , ,

т.е. здесь осуществляется масштабирование с коэффициентами Sx и Sy.

На втором шаге (рис. 4.27) введем промежуточную СК2. Систему координат СК2 привяжем к СК1 как показано на рис. 4.27. Найдем F21 – координатный фрейм, задающий привязку СК2 к СК1, . Нас же интересует , т.о. .

На третьем шаге (рис. 4.28) введем CKW (XW, YW) и привяжем ее к СК2 как показано на рис. 4.28. Найдем F2W – координатный фрейм, задающий привязку СК2 к СКW:

.

Итоговая матрица преобразования

F0W = F2WF12F01.

После перемножения получаем:

, , .(4.5)

Проверка. Точка (l, b) в МСК (x0, y0) должна в результате преобразования F0w перейти в точку (x, y) в СКw:

.

Точка (r, t) в МСК должна перейти в точку (w+x, h+y) в СКw:

.

Все так, как и должно быть.

Решение задачи 4 (случай 3D). Получить матрицу преобразования координат F0P такую, которая параллелепипед, заданный в СК0, переводит в куб размерами 2х2x2 в системе координат СКP, (рис. 4.29).

На рис. 4.29 n – расстояние до ближней плоскости; f – расстояние до дальней плоскости. Особенность: n и f задаются как расстояние до ближней и дальней плоскости в отрицательном направлении оси Z0, поэтому на рис. 4.29 они показаны со знаком «–»; l, t, r, b – обычные координаты.

Если здесь не принимать в расчет координату Z0, то эта задача в точности совпадает с рассмотренной ранее задачей 2 для случая 2D, и решать ее будем аналогично. Как и ранее, задачу будем решать в три шага.

 На первом шаге введем промежуточную СК1, размещенную точно в центре параллелепипеда (на рис. 4.29 она показана).

По аналогии с 2D , где , , . В последнем выражении знак «–» появился потому, что f и n в этом примере положительные.

 На втором шаге осуществим такое преобразование, при котором из СК1 в СК2 параллелепипед переходит в куб размерами 222.

Также по аналогии с 2D:

; ; ; .

 На третьем шаге поменяем направление оси z.

Надо получить F2P. Очевидно . Окончательный результат F0P = F2PF12F01. После перемножения:

,

где ; ; ; ; ; . или, если сделать подстановки:

. (4.6)