лекция_7

advertisement
Связь преобразований объектов c преобразованиями
координат
Когда
пользователь
графической
системы
видит
на
экране
перемещающийся объект, то, как вы считаете, что на самом деле происходит
— перемещаются объекты или система координат в обратном направлении?
Например, если в кино вы видите объекты, вращающиеся на экране по
часовой стрелке, то может в действительности это камера поворачивается
против часовой стрелки?
Преобразование объектов и преобразование систем координат тесно связаны
между собой. Движение объектов можно рассматривать как движение в
обратном направлении соответствующей системы координат.
Такая относительность для объектов отображения и систем координат дает
разработчикам компьютерных систем дополнительные возможности для моделирования и визуализации пространственных объектов. С каждым объектом можно связывать как собственную локальную систему координат, так и
единую для нескольких объектов. Это можно использовать, например, для
моделирования подвижных объектов.
Обычно, того же самого эффекта можно добиться, если использовать
различные подходы. Однако в одних случаях удобнее использовать
преобразование координат, а в других — преобразование объектов. Не
последнюю роль играет сложность обоснования какого-то способа, его
понятность.
Рассмотрим пример комбинированного подхода. Пусть нам нужно получить
функцию расчета координат (X, Y) для поворота вокруг центра с координатами (Xo, Yo) (рис. 2.13).
Рис. 2.13. Вращение вокруг произвольного центра
Выше мы рассмотрели поворот относительно центра координат (0, 0). Для
решения нашей задачи введем новую систему координат (x’O’y’) с центром
в точке (х0, у0):
Для такой системы поворот точек происходит вокруг ее центра:
Преобразуем координаты (X’,Y’) в (X,Y) сдвигом системы координат в
точку (0,0).
Если объединить формулы преобразований, то получим результат:
Решение этой задачи можно было бы осуществить и в матричной форме:
Рассмотрим второй пример. Нашей задачей будет вывод формул параметрического описания поверхности тора. Изобразим тор следующим образом
(рис. 2.14).
Для произвольной точки Р, лежащей на поверхности тора, требуется выразить координаты (х, у, z) через константы, описывающие размеры фигуры, а
также через некоторые параметры. Для поверхности в трехмерном пространстве необходимо использовать два параметра. В качестве таковых выберем
угловые величины: φ(широта) и ω (долгота).
Непосредственное определение координат точки Р представляется сложным,
поэтому искомые координаты будем искать несколькими шагами преобразований. Рассмотрим окружность, лежащую в плоскости zOy, центр этой окружности совпадает с центром координат. Координаты точки Р" с широтой <р
составляют
где
r— малый радиус тора.
Теперь перенесем окружность на расстояние R (большой радиус тора) по оси
у в той же плоскости zOy. Получим точку P’. Ее координаты:
Окружность, которой принадлежит точка Р', является геометрическим местом точек тора с нулевой долготой (о. Если точку Р' повернуть на угол to,
то получим искомую точку Р поверхности тора с координатами
Подставляя значения x’,y’,z’ получим искомые формулы:
Эту задачу можно было бы решить, используя преобразование координат.
Подобный случай мы рассмотрим ниже (пример studex8 в разделе программирования). Однако, как представляется, более ясным здесь выглядит использование операций перемещения точки (из положения P’’ в P’, а затем в
Р).
2.4. Проекции
В настоящее время наиболее распространены устройства отображения, которые синтезируют изображения на плоскости — экране дисплея или бумаге.
Устройства, которые создают истинно объемные изображения, пока достаточно редки. Но все чаще появляются сведения о таких разработках, например, об объемных дисплеях [37] или даже о трехмерных принтерах [45].
При использовании любых графических устройств обычно используют проекции. Проекция задает способ отображения объектов на графическом устройстве. Мы будем рассматривать только проекции на плоскость.
Мировые и экранные координаты
При отображении пространственных объектов на экране или на листе бумаги
с помощью принтера необходимо знать координаты объектов. Мы рассмотрим две системы координат. Первая — мировые координаты, которые описывают истинное положение объектов в пространстве с заданной точностью.
Другая — система координат устройства изображения, в котором осуществляется вывод изображения объектов в заданной проекции.
Пусть мировые координаты будут трехмерными декартовыми координатами.
Где должен размещаться центр координат и какими будут единицы измерения вдоль каждой оси, пока для нас не очень важно. Важно то, что для отображения мы будем знать какие-то числовые значения координат отображаемых объектов.
Для получения изображения в определенной проекции необходимо рассчитать координаты проекции. Из них можно получить координаты для графического устройства — назовем их экранными координатами. Для синтеза
изображения на плоскости достаточно двумерной системы координат. Одна-
ко в некоторых алгоритмах визуализации используются трехмерные экранные координаты, например, в алгоритме Z-буфера.
Основные типы проекций
В компьютерной графике наиболее распространены параллельная и центральная проекции (рис. 2.15).
Рис. 2.15. Параллельная и центральная проекции
Для центральной проекции (также называемой перспективной) лучи проецирования исходят из одной точки, размещенной на конечном расстоянии от
объектов и плоскости проецирования. Для параллельной проекции лучи проецирования параллельны.
Аксонометрическая проекция
Аксонометрическая проекция — разновидность параллельной проекции. Для
нее все лучи проецирования располагаются под прямым углом к плоскости
проецирования (рис. 2.16).
Зададим положения плоскости проецирования с помощью двух углов — а и й
Расположим камеру так, чтобы проекция оси z на плоскости проецирования
ЛТЗУбыла бы вертикальной линией (параллельной оси О У)-
Рис. 2.16. Аксонометрическая проекция
Для того чтобы найти соотношения между координатами (х, у, z) и (X, Y, Z)
для любой точки в трехмерном пространстве, рассмотрим преобразования
системы координат (х, у, z) в систему (X, Y, Z). Зададим такое преобразование
двумя шагами.
1-й шаг. Поворот системы координат относительно оси z на угол а. Такой
поворот осей описывается матрицей
2-й шаг. Поворачиваем систему координат (х', у', z') относительно оси х' на
угол /?— получаем координаты (X, Y, Z). Матрица поворота
Преобразования координат выражаем произведением матриц BxA:
Запишем преобразование для координат проекции в виде формул:
Как вы считаете, будет ли получена та же проекция, если описывать преобразования координат теми же двумя шагами, но в другой последовательности —
• сначала поворот системы координат относительно оси х на угол В, а потом
поворот системы координат относительно оси z' на угол а? И будут ли вертикальные линии в системе координат (x,y,z) рисоваться также вертикалями в
системе координат (X, Y, Z)? Иначе говоря, выполняется ли А*В = В* А!
Обратное преобразование координат аксонометрической проекции. Для
того, чтобы координаты проекции (X, У, Z) преобразовать в мировые координаты (х, у, z), нужно проделать обратную последовательность поворотов.
Вначале выполнить поворот на угол -Д а затем — поворот на угол -а. Запишем обратное преобразование в матричном виде
Матрицы поворотов:
Перемножив матрицы А и В, получим матрицу обратного преобразования:
Запишем обратное преобразование также и в виде формул
Перспективная проекция
Перспективную
проекцию
(рис.
2.17)
сначала
рассмотрим
при
вертикальном расположении камеры, когда а = р = 0. Такую проекцию
можно себе представить как изображение на стекле, через которое смотрит
наблюдатель, расположенный сверху в точке (х, у, z) = (0, 0, zk). Здесь
плоскость проецирования параллельна плоскости (х Оу).
Исходя из подобия треугольников, запишем такие пропорции:
Учитывая также координату Z:
В матричной форме преобразования координат можно записать так:
Рис. 2.17. Перспективная проекция
Обратите внимание на то, что здесь коэффициенты матрицы зависят от
координаты z (в знаменателе дробей). Это означает, что преобразование
координат является нелинейным (а точнее, дробно-линейным), оно относится
к классу проективных преобразований.
Теперь рассмотрим общий случай — для произвольных углов наклона
камеры (а и Д) так же, как и для параллельной аксонометрической проекции.
Пусть (х', у', z') — координаты для системы координат, повернутой относительно начальной системы (х, у, z) на углы а и /?.
Тогда
Запишем преобразования координат перспективной проекции в виде
Последовательность преобразования координат можно описать так
Преобразование в целом нелинейное. Его нельзя описать одной матрицей
коэффициентов-констант для всех объектов сцены (хотя для преобразования
координат можно использовать и матричную форму).
Для такой перспективной проекции плоскость проецирования перпендикулярна лучу, исходящему из центра (х, у, z) = (О, 0, 0) и наклоненному под
углом а, р. Если камеру отдалять от центра координат, то центральная проекция видоизменяется. Когда камера в бесконечности, центральная проекция
вырождается в параллельную проекцию.
Укажем основные свойства перспективного преобразования. В центральной
проекции:
- не сохраняется отношение длин и площадей;
- прямые линии изображаются прямыми линиями;
- параллельные прямые изображаются сходящимися в одной точке.
Последнее свойство широко используется в начертательной геометрии для
ручного рисования на бумаге. Проиллюстрируем это на примере каркаса домика (рис. 2.18).
Существуют и другие перспективные проекции, которые различаются положением плоскости проецирования и местом точки схождения лучей проецирования. Кроме того, проецирование может осуществляться не на плоскость,
а
> например, на сферическую или цилиндрическую поверхность.
Рассмотрим косоугольную проекцию, для которой лучи проецирования не
перпендикулярны плоскости проецирования. Основная идея такой проекции
— камера поднята на высоту h с сохранением вертикального положения
плоскости проектирования (рис. 2.19).
Рис. 2.18. Параллельные линии изображаются в центральной проекции
сходящимися в одной точке
Рис. 2.19. Косоугольная проекция
Получить такую проекцию можно следующим способом:
1. Выполняем поворот вокруг оси z на угол а.
2. Заменяем z' на -у', а у'на z'.
3. Выполняем сдвиг системы координат вверх на высоту камеры h.
4. В плоскости (х', у', 0) строим перспективою проекцию уже рассмотренным
выше способом (точка схода лучей на оси z).
Преобразование координат может быть описано таким образом. Сначала определяются (*', у', z').
А потом выполняется перспективное преобразование
Преимущество такой проекции заключается в сохранении параллельности
вертикальных линий, что иногда полезно при изображении домов в архитектурных компьютерных системах.
Примеры изображений в различных проекциях. Приведем примеры изображений одинаковых объектов в различных проекциях. В качестве объектов
будут кубы одинакового размера. Положение камеры определим углами наклона а = 27°, у? = 70°.
Пример аксонометрической проекции приведен на рис. 2.20.
Рис. 2.20. Аксонометрическая проекция
Теперь рассмотрим примеры для перспективной проекции. В отличие от параллельной проекции, изображение в перспективной проекции существенно
зависит от положения плоскости проецирования и расстояния до камеры.
В оптических системах известно понятие фокусного расстояния. Чем больше
фокусное расстояние объектива, тем меньше восприятие перспективы (рис. 2.21)
и наоборот, для короткофокусных объективов перспектива наибольшая (рис.
2.22). Данный эффект вы, наверное, уже замечали, если занимались
съемками видеокамерой или фотоаппаратом. В наших примерах можно наблюдать некоторое соответствие величины расстояния от камеры до плоскости проецирования (zK — z,M) и фокусного расстояния объектива. Это соответствие, однако, условно, аналогия с оптическими системами здесь неполная
Для приведенных ниже примеров (рис. 2.21, 2.22) zm = 700. Углы наклона
камеры а = 27°,/? = 70°.
Рис. 2.21. Перспективная проекция для длиннофокусной камеры (z„ = 2000
Рис. 2.22. Перспективная проекция для короткофокусной камеры (z„ = 1200)
В случае короткофокусной камеры (zK = 1200) восприятие перспективы наи-
более заметно для кубов, которые расположены ближе всего к камере. Вертикальные линии объектов не являются вертикалями на проекции (объекты
"разваливаются").
Рассмотрим примеры косоугольной проекции (рис. 2.23, 2.24). Для нее вертикальные линии объектов сохраняют вертикальное расположение на проекции. Положение камеры (точки схождения лучей проецирования) описывается углом поворота a = 27° и высотой подъема h = 500. Плоскость проецирования параллельна плоскости (х'0уг) и располагается на расстоянии zm = 700.
Рис. 2.23.
Косоугольная перспективная проекция для длиннофокусной камеры (z«=
2000)
Рис. 2.24. Косоугольная перспективная проекция для короткофокусной
камеры (z* = 1200)
Рассмотрим еще один пример изображения в центральной проекции — текст
в стиле фильма "Звездные войны":
Download