Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KG / КГ_2глава.doc
Скачиваний:
128
Добавлен:
26.05.2014
Размер:
553.98 Кб
Скачать

2.4. Проекции

В настоящее время наиболее распространены устройства отображения, кото­рые синтезируют изображения на плоскости — экране дисплея или бумаге. Устройства, которые создают истинно объемные изображения, пока доста­точно редки. Но все чаще появляются сведения о таких разработках, напри­мер, об объемных дисплеях [37] или даже о трехмерных принтерах [45].

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

Мировые и экранные координаты

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

Пусть мировые координаты будут трехмерными декартовыми координатами. Где должен размещаться центр координат, и какими будут единицы измерения вдоль каждой оси, пока для нас не очень важно. Важно то, что для изображения мы будем знать какие-то числовые значения координат отображаемых объектов.

Для получения изображения в определенной проекции необходимо рассчитать координаты проекции. Из них можно получить координаты для графического устройства— назовем их экранными координатами. Для синтеза изображения на плоскости достаточно двумерной системы координат. Одна­ко в некоторых алгоритмах визуализации используются трехмерные экранные координаты, например, в алгоритме Z-буфера.

Основные типы проекций

В компьютерной графике наиболее распространены параллельная и цент­ральная проекции (рис. 2.15).

Для центральной проекции (также называемой перспективной) лучи проеци­рования исходят из одной точки, размещенной на конечном расстоянии от объектов и плоскости проецирования. Для параллельной проекции лучи про­ецирования параллельны.

Аксонометрическая проекция

Аксонометрическая проекция — разновидность параллельной проекции. Для нее все лучи проецирования располагаются под прямым углом к плоскости проецирования (рис. 2.16).

[Зададим положения плоскости проецирования с помощью двух углов — α и β, Расположим камеру так, чтобы проекция оси z на плоскости проецирова|ния Х0Y была бы вертикальной линией (параллельной оси ОУ).

Рис. 2.16. Аксонометрическая проекция

Для того чтобы найти соотношения между координатами (х, у, z) и (X, Y, Z) для любой точки в трехмерном пространстве, рассмотрим преобразования системы координат (х, у, z) в систему (X, Y, Z). Зададим такое преобразование двумя шагами.

1-й шаг. Поворот системы координат относительно оси z на угол α. Такой поворот осей описывается матрицей

2-й шаг. Поворачиваем систему координат (x, у', z') относительно оси х' на угол β — получаем координаты (X, Y, Z). Матрица поворота

Преобразования координат выражаем произведением матриц В * А:

Запишемпреобразование для координат проекции в виде формул:

Как вы считаете, будет ли получена та же проекция, если описывать преобра­зования координат теми же двумя шагами, но в другой последовательности — сначала поворот системы координат относительно оси х на угол β, а потом поворот системы координат относительно оси z' на угол α? И будут ли вер­тикальные линии в системе координат (x,y,z) рисоваться также вертикалями в системе координат (X, У, Z)? Иначе говоря, выполняется ли А*В - В*А? Обратное преобразование координат аксонометрической проекции. Для того, чтобы координаты проекции (X, Y, Z) преобразовать в мировые коорди­наты (х, у, z), нужно проделать обратную последовательность поворотов. Вначале выполнить поворот на угол -β а затем — поворот на угол α. Запи­шем обратное преобразование в матричном виде

Матрицы поворотов:

Перемножив матрицы А-1 и В-1, получим матрицу обратного преобразования:

Запишем обратное преобразование также и в виде формул

Перспективная проекция

Перспективную проекцию (рис. 2.17) сначала рассмотрим при вертикальном расположении камеры, когда а=β = 0. Такую проекцию можно себе пред­ставить как изображение на стекле, через которое смотрит наблюдатель, рас­положенный сверху в точке (х, у, z) = (0, 0, zk). Здесь плоскость проецирова­ния параллельна плоскости (хОу).

Исходя из подобия треугольников, запишем такие пропорции:

Учитывая также координату Z:

В матричной форме преобразования координат можно записать так:

Рис. 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). Данный эффект вы, наверное, уже замечали, если занимались съемками видеокамерой или фотоаппаратом. В наших примерах можно наблюдать некоторое соответствие величины расстояния от камеры до плоскости проецирования {zkzпл) и фокусного расстояния объектива. Это соответствие, однако, условно, аналогия с оптическими системами здесь неполная.

Для приведенных Ниже примеров (рис. 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):

Из неравенства (3): I

Поскольку dx1 < dx2, то величину dx можно выбрать из интервала I dx1dx dx2. Выберем центральное расположение в окне: I

Аналогично найдем dy:

При таких значениях dx и dy центр сцены будет в центре окна.

В других случаях, когда в окне необходимо показывать с соответствующим масштабом лишь часть сцены, можно прямо задавать числовые значения масштаба (К) и координаты сдвига (dx, dy). При проектировании интерфейса графической системы желательно ограничить выбор К, dx, dy диапазоном допустимых значений.

графических системах используются разнообразные способы задания масйаба отображения и определения границ сцены для показа в окне просмотра. Например, для сдвига часто используют ползунки скроллинга. Также "южно указывать курсором точку на сцене, и затем эта точка становится центральной точкой окна. Или можно очертить прямоугольник, выделяя грани­цы фрагмента сцены, — тогда этот фрагмент затем будет вписан в окно. Й так далее. Все эти способы отображения основываются на растяжении и сжатии (масштабировании), а также сдвиге, и описываются аффинным преобразованием координат.

Соседние файлы в папке KG