КГ_2глава (1024102), страница 3
Текст из файла (страница 3)
В матричной форме преобразования координат можно записать так:
Рис. 2.17. Перспективная проекция
Обратите внимание на то, что здесь коэффициенты матрицы зависят от координаты z (в знаменателе дробей). Это означает, что преобразование координат является нелинейным (а точнее, дробно-линейным), оно относится к классу проективных преобразований.
Теперь рассмотрим общий случай — для произвольных углов наклона камеры (а и р) так же, как и для параллельной аксонометрической проекции. Пусть (х', у', z1) — координаты для системы координат, повернутой относительно начальной системы (х, у, z) на углы α и β.
Тогда
Запишем преобразования координат перспективной проекции в виде:
Последовательность преобразования координат можно описать так :
Преобразование в целом нелинейное. Его нельзя описать одной матрицей коэффициентов-констант для всех объектов сцены (хотя для преобразования координат можно использовать и матричную форму).
Для такой перспективной проекции плоскость проецирования перпендикулярна лучу, исходящему из центра (х, у, z)=(0, 0, 0) и наклоненному под углом α, β. Если камеру отдалять от центра координат, то центральная проекция видоизменяется. Когда камера в бесконечности, центральная проекция вырождается в параллельную проекцию.
Укажем основные свойства перспективного преобразования. В центральной
проекции:
□ не сохраняется отношение длин и площадей;
□ прямые линии изображаются прямыми линиями;
□ параллельные прямые изображаются сходящимися в одной точке.
Последнее свойство широко используется в начертательной геометрии для ручного рисования на бумаге. Проиллюстрируем это на примере каркаса домика (рис. 2.18).
Существуют и другие перспективные проекции, которые различаются положением плоскости проецирования и местом точки схождения лучей проецирования. Кроме того, проецирование может осуществляться не на плоскость, а, например, на сферическую или цилиндрическую поверхность.
Рассмотрим косоугольную проекцию, для которой лучи проецирования не перпендикулярны плоскости проецирования. Основная идея такой проекции — камера поднята на высоту h с сохранением вертикального положения плоскости проектирования (рис. 2.19).
Рис. 2.18. Параллельные линии изображаются в центральной проекции сходящимися в одной точке
Рис. 2.19. Косоугольная проекция
Получить такую проекцию можно следующим способом:
1. Выполняем поворот вокруг оси z на угол а .
2. Заменяем z' на -у', а .у' на z'.
3. Выполняем сдвиг системы координат вверх на высоту камеры h
4. В плоскости (х', у', 0) строим перспективную проекцию уже рассмотренным выше способом (точка схода лучей на оси z).
Преобразование координат может быть описано таким образом. Сначала определяются (x', у', z′).
А потом выполняется перспективное преобразование
Преимущество такой проекции заключается в сохранении параллельности вертикальных линий, что иногда полезно при изображении домов в архитектурных компьютерных системах.
Примеры изображений в различных проекциях. Приведем примеры изображений одинаковых объектов в различных проекциях. В качестве объектов будут кубы одинакового размера. Положение камеры определим углами наклона α = 27°, β = 70°.
Пример аксонометрической проекции приведен на рис. 2.20.
Рис. 2.20. Аксонометрическая проекция
Теперь рассмотрим примеры для перспективной проекции. В отличие от параллельной проекции, изображение в перспективной проекции существенно зависит от положения плоскости проецирования и расстояния до камеры.
В оптических системах известно понятие фокусного расстояния. Чем больше фокусное расстояние объектива, тем меньше восприятие перспективы (рис. 2.21' и наоборот, для короткофокусных объективов перспектива наибольший (рис. 2.22). Данный эффект вы, наверное, уже замечали, если занимались съемками видеокамерой или фотоаппаратом. В наших примерах можно наблюдать некоторое соответствие величины расстояния от камеры до плоскости проецирования {zk – zпл) и фокусного расстояния объектива. Это соответствие, однако, условно, аналогия с оптическими системами здесь неполная.
Для приведенных Ниже примеров (рис. 2.21, 2.22) zпл = 700. Углы наклона камеры α = 27°, β = 70°.
Рис. 2.21. Перспективная проекция для длиннофокусной камеры (zK = 2000)
Рис. 2.22. Перспективная проекция для короткофокусной камеры (zK = 1200)
В случае короткофокусной камеры (zK = 1200) восприятие перспективы наиболее заметно для кубов, которые расположены ближе всего к камере. Вертикальные линии объектов не являются вертикалями на проекции (объекты разваливаются").
Усмотрим примеры косоугольной проекции (рис. 2.23, 2.24). Для нее вертикальные линии объектов сохраняют вертикальное расположение на проекции. Положение камеры (точки схождения лучей проецирования) описывается углом поворота α = 27° и высотой подъема h = 500. Плоскость проецирования параллельна плоскости (х'Оу') и располагается на расстоянии zпл = 700.
Рис. 2.23. Косоугольная перспективная проекция для длиннофокусной камеры (zK = 2000)
Рис. 2.24. Косоугольная перспективная проекция для короткофокусной камеры (zK = 1200)
Рассмотрим еще один пример изображения в центральной проекции — тега в стиле фильма "Звездные войны":
Отображение в окне
Как мы уже рассмотрели выше, отображение на плоскость проецирования соответствует некоторому преобразованию координат. Это преобразование координат различно для разных типов проекции, но, так или иначе, осуществляется переход к новой системе координат — координатам проецирования. Координаты проецирования могут быть использованы для формирования изображения с помощью устройства графического вывода. Однако при этом могут понадобиться дополнительные преобразования, поскольку система координат в плоскости проецирования может не совпадать с системой координат устройства отображения. Например, должны отображаться объекты, измеряемые в километрах, а в растровом дисплее единицей измерения является пиксел. Как выразить километры в пикселах?
Кроме того, вы, наверное, видели, что на экране компьютера можно показывать увеличенное, уменьшенное изображение объектов, а также их перемещать. Как это делается?
Введем обозначения. Пусть (Хэ, Уэ,Zэ) — это экранные координаты объектов в графическом устройстве отображения. Заметим, что не следует воспринимать слово "экранные" так, будто речь идет только о дисплеях — все нижеследующее можно отнести и к любым другим устройствам, использующим декартову систему координат. Координаты проецирования обозначим здесь как (X, Y, Z).
Назовем окном прямоугольную область вывода с экранными координатами
Xэmin Уэтп) - (Хэтах Уэтах)- Обычно Приходится Отображать В Окно ИЛИ ВСЮ
сцену, или отдельную ее часть (рис. 2.25).
Рис. 2.25. Отображение проекции сцены
а — границы сцены в координатах проекции; б— в окне часть сцены, в — вся сцена с сохранением пропорций вписана в окно
Преобразование координат проекции в экранные координаты можно задать как растяжение/сжатие и сдвиг:
ХЭ = КХ + dx, ; YЭ = KY+dy; Zэ =KZ.
Такое преобразование сохраняет пропорции объектов благодаря одинаковому коэффициенту растяжения/сжатия (К) для всех координат. Заметим, что для плоского отображения можно отбросить координату Z. Рассмотрим, как можно вычислить К, dx и dy. Например, необходимо вписать все изображение сцены в окно заданных размеров. Условие вписывания можно определить так:
Если прибавить (1) к (3), то получим:
Из неравенств (2) и (4) следует:
Решением системы (1)—(4) для K будет: К≤ min {Кх, Ку} = Кmin.
Если значение Кх или значение KY равно бесконечности, то его необходим отбросить. Если оба — то значение Кmin можно задать равным единице. Дга| того чтобы изображение в окне имело наибольший размер, выберем К = Кmin Теперь можно найти dx. Из неравенства (1):
Поскольку dx1 < dx2, то величину dx можно выбрать из интервала I dx1≤dx≤ dx2. Выберем центральное расположение в окне: I
Аналогично найдем dy:
При таких значениях dx и dy центр сцены будет в центре окна.
В других случаях, когда в окне необходимо показывать с соответствующим масштабом лишь часть сцены, можно прямо задавать числовые значения масштаба (К) и координаты сдвига (dx, dy). При проектировании интерфейса графической системы желательно ограничить выбор К, dx, dy диапазоном допустимых значений.
графических системах используются разнообразные способы задания масйаба отображения и определения границ сцены для показа в окне просмотра. Например, для сдвига часто используют ползунки скроллинга. Также "южно указывать курсором точку на сцене, и затем эта точка становится центральной точкой окна. Или можно очертить прямоугольник, выделяя границы фрагмента сцены, — тогда этот фрагмент затем будет вписан в окно. Й так далее. Все эти способы отображения основываются на растяжении и сжатии (масштабировании), а также сдвиге, и описываются аффинным преобразованием координат.
2.5. Выводы
Представим цепочку преобразований координат от мировых к экранным следующим образом (рис. 2.26):
Рис. 2.26. Этапы преобразований координат
Для аксонометрической (параллельной) проекции координаты проекции совпадают с видовыми координатами (хотя это и не обязательно). Преобразование координат можно описать одной матрицей, которая получается перемножением соответствующих матриц.
Важно то, что для аксонометрической проекции коэффициенты матрицы это константы, одинаковые для всех точек трехмерного пространства. 3 дает возможность свести к минимуму вычисления координат в цикле графического вывода. В этом плане можно отметить крайний случай, когда мировые координаты совпадают с экранными — вообще нет никаких преобразований координат. Например, координаты объектов задаются в пикселах экрана. Такое часто встречается, например, в двухмерной графике.
Для перспективной (центральной) проекции коэффициенты матрицы проецирования на плоскость не являются константами — они зависят от Z. Это делает нецелесообразным запись цепочки преобразований в виде одной матрицы и, как следствие этого, усложняется расчет координат в сравнении с параллельной проекцией.
Для центральной проекции иногда используют матричную форму с применением обобщенных однородных нелинейных координат [28, 32].
В качестве мировых и экранных координат нами была использована трехмерная ортогональная система. В компьютерных графических системах также используются другие системы координат и иные проекции. В особенности это касается систем, которые моделируют объекты, располагающиеся на поверхности Земли. С этими вопросами можно ознакомиться в многочисленной литературе по геодезии и картографии, а также в работах, посвященных геоинформационным системам.