3-15 ПЕРСПЕКТИВНЫЕ ПРЕОБРАЗОВАНИЯ
Перспективное преобразование
имеет место, когда не равен нулю любой из первых трех элементов четвертого
столбца обобщенной
-матрицы
преобразования однородных координат. Как было упомянуто ранее (см. разд. 3-11),
перспективное преобразование - это преобразование одного трехмерного
пространства в другое. В отличие от обсуждавшихся ранее параллельных
преобразований, в данном случае параллельные прямые сходятся, размер объекта
уменьшается с увеличением расстояния до центра проекции, и происходит неоднородное
искажение линий объекта, зависящее от ориентации и расстояния от объекта до
центра проекции. Все это помогает нашему восприятию глубины, но не сохраняет
форму объекта.
Одноточечное
перспективное преобразование задается равенством
. (3-45)
Здесь
. Обычные
координаты получаются делением на
:
. (3-46)
Перспективное
проецирование на некоторую двумерную видовую плоскость можно получить,
объединив ортографическую проекцию с перспективным преобразованием. Например,
перспективное проецирование на плоскость
выполняется с помощью преобразований
(3-47)
и
. (3-48)
Обычные
координаты равны
. (3-49)
Чтобы
показать, что равенство (3-47) выполняет перспективное проецирование на
плоскость
,
рассмотрим рис. 3-26 с геометрическими построениями для перспективной проекции
трехмерной точки
на
плоскость
в
точку
и с
центром проекции, лежащим в
на оси
.
Рис. 3-26 Перспективная проекция
точки.
Координаты
точки проекции
можно
получить, используя подобие треугольников. Из рис. 3-26 следует:
или
и
или
?
равно,
конечно, нулю.
Полагая
, получим результаты,
аналогичные полученным с помощью (3-47). Таким образом, уравнение (3-47)
осуществляет перспективное проецирование на плоскость
с центром проекции в точке
на оси
. Заметим, что при
приближении
к
бесконечности,
приближается
к нулю и в результате получаем аксонометрическую проекцию на плоскость
.
Рис. 3-27 Проекция прямой,
параллельной оси
.
Заметим
далее, что на точки, лежащие в плоскости проекции, т.е.
, перспективное преобразование
не действует. Отметим также, что начало координат
остается неизменным. Следовательно,
если плоскость проекции
проходит через объект, то эта часть
объекта изображается с правильным размером и формой. Все другие части объекта
искажаются.
Чтобы лучше понять действие
перспективного преобразования, рассмотрим рис. 3-27. На нем показано
перспективное проецирование на плоскость
отрезка
, параллельного оси
, в отрезок
на плоскости
с центром проекции,
расположенным в точке
на оси
. Преобразование можно разделить на два
этапа (см. (3-47)). На первом этапе отрезок
отображается в отрезок
(см. рис. 3-27).
Затем с помощью ортографического проецирования отрезок
в трехмерном пространстве
отображается в отрезок
на плоскости
. Центр проекции расположен в
бесконечности.
Исследование рис. 3-27
показывает, что прямые
и
пересекают плоскость
в одной и той же
точке. Прямая
также
пересекает ось
в
точке
.
Далее, перспективное преобразование (см. (3-45) и (3-46)) отображает
расположенную в бесконечности точку пересечения параллельных прямых
и оси
в конечную точку
на оси
. Эта точка
называется точкой схода. Заметим, что точка схода лежит на том же расстоянии от
плоскости проекции, что и центр проекции, только с противоположной стороны от
плоскости, например, если
есть плоскость проекции, а центр
проекции находится в
, тогда точка схода находится в
.
Чтобы подтвердить это наблюдение,
рассмотрим перспективное преобразование точки, находящейся в бесконечности на
оси
, т.е.
. (3-50)
Соответствующая
ей точка
теперь
является конечной точкой на положительной оси
. Это означает, что все полубесконечное
положительное пространство
отображается в ограниченную область
. Далее, все прямые,
параллельные оси
,
теперь проходят через точку
- точку схода.
Прежде чем перейти к примерам,
для полноты изложения укажем одноточечные перспективные преобразования с
центром проекции и точкой схода, расположенными на осях
и
. Одноточечное перспективное преобразование
(3-51)
с
обычными координатами
(3-52)
имеет
центр проекции
и
точку схода, расположенную на оси
в
.
Одноточечное перспективное
преобразование
(3-53)
с обычными координатами
(3-54)
имеет центр проекции
и точку схода,
расположенную на оси
в
.
Пример 3-17
Перспективное преобразование прямой, параллельной оси
Рассмотрим отрезок на рис. 3-27, параллельный
оси , с
концевыми точками и . Выполним перспективное проецирование
на плоскость с
центром проекции в точке . Перспективное преобразование в при равно
.
Параметрическое
уравнение отрезка
, ,
или
.
Пересечение этого отрезка с
плоскостями ,
и дает
.
Подставив
значение в
параметрическое уравнение отрезка , получим
,
что
является пересечением отрезка с осью в точке , точке схода. Теперь подстановка в
уравнения для -
и -компонент
значения дает
пересечение с плоскостью , т.е.
,
что
совпадает с пересечением прямой с плоскостью . Проекция отрезка в отрезок на плоскости вычисляется
следующим образом
.
|
Ниже
приводится пример с простым кубом.
Пример 3-18
Одноточечное перспективное преобразование куба
Выполним перспективное проецирование
на плоскость единичного
куба, изображенного на рис. 3-28а, с центром проекции в точке на оси .
Одноточечный перспективный множитель равен
.
Рис. 3-28 Одноточечная перспективная
проекция единичного куба.
Из
уравнения (3-48) получаем, что
,
.
Результат
изображен на рис. 3-28b. Отметим, что, поскольку центр
проекции находится на положительной оси , проекция передней грани куба больше
проекции задней грани. Почему так происходит, показано на рис. 3-28с, на
котором изображена параллельная проекция исходного куба на плоскость .
Отметим
также, что, поскольку точка схода лежит на оси , прямая на рис. 3-28b проходит
через начало координат.
В
качестве альтернативного метода, эквивалентного первому, можно было бы
выполнить перспективное преобразование и получить искаженный объект в
трехмерном пространстве, а затем ортографически спроецировать результат на
некоторую плоскость. Искаженный объект получают следующим образом:
.
Результат,
полученный с помощью косоугольной проекции показан на рис. 3-28d. Заметим, что
«передняя» грань больше,
чем «зaдняя» грань . Последующее ортографическое
проецирование на плоскость дает тот же самый результат , что был получен
ранее и который изображен на рис. 3-28с.
На
рис. 3-28е, на котором представлена ортографическая проекция на плоскость искаженного
объекта с рис. 3-28d, показано, что ребра куба, ранее параллельные оси , теперь сходятся к
точке схода .
|
Рис. 3-28b не передает трехмерности куба. Как показано в
следующем примере, более удовлетворительный результат можно получить
центрированием куба.
Пример 3-19 Одноточечное перспективное
преобразование центрированного куба
Изображенный на рис. 3-28a куб может
быть центрирован на оси путем его переноса на вдоль направлений и . Результирующее
преобразование
.
Сдвинутый
куб изображен на рис. 3-29а.
Преобразованные обычные координаты
равны
.
Результат
изображен на рис. 3-29b. Заметим, что ранее параллельные оси прямые,
соединяющие углы передней и задней граней, теперь сходятся к оси .
|
Рис. 3-29 Одноточечная
перспективная проекция центрированного единичного куба.
К сожалению, результирующее
изображение все еще не дает адекватного восприятия трехмерной формы объекта.
Поэтому мы обратимся к более сложным перспективным преобразованиям.
Если в четвертом столбце
-матрицы
преобразования два элемента из первых трех не равны нулю, то такое
преобразование называется двуточечным перспективным преобразованием.
Двуточечное перспективное преобразование
(3-55)
с
обычными координатами
(3-56)
имеет
два центра проекции: первый на оси
в точке
и второй на оси
в точке
, и две точки схода: на оси
в точке
и на оси
в точке
. Заметим, что
заданное уравнением (3-55) двуточечное преобразование можно получить
объединением двух одноточечных. Конкретнее,
,
где
задается
уравнением (3-55),
-
уравнением (3-53) и
- уравнением (3-51). Более подробно
двуточечная перспективная проекция рассмотрена в следующем примере.
Пример 3-20 Двуточечные перспективные
преобразования
Снова рассмотрим куб, описанный в
примере 3-18. Построим двуточечную перспективную проекцию этого куба на
плоскость для
центров проекции, находящихся в точках и . Нужное преобразование получим путем
объединения (3-55) и (3-27). А именно,
.
Здесь
и равны
, .
Преобразованные
координаты куба имеют вид:
.
Результаты
изображены на рис. 3-30а. Две точки схода находятся в и .
Рис. 3-30 Двуточечные перспективные
проекции, (а) Нецентрированного куба; (b)
центрированного куба
Центрирование куба на оси с помощью переноса
вдоль и на , аналогичное
проделанному в примере 3-18, приведет к следующей общей матрице
преобразования
,
где
предполагается проецирование на плоскость . Заметим, что в этом случае общий
масштабирующий множитель больше не равен единице (см. (3-4)), т. е.
происходит очевидное масштабирование куба, вызванное его перемещением.
Преобразованные координаты равны
.
Результаты
изображены на рис. 3-30b.
|
И снова полученное изображение не
дает адекватного восприятия трехмерной формы объекта. Поэтому обратимся к
трехточечным перспективным преобразованиям.
Трехточечная перспектива
получается, если не равны нулю три первых элемента четвертого столбца
-матрицы
преобразования. Это трехточечное перспективное преобразование
(3-57)
с
обычными координатами
(3-58)
имеет
три центра проекции: на оси
в точке
, на оси
в
и на оси
в
, а также три точки схода: на оси
в
, на оси
в
и на оси
в
.
Снова заметим, что трехточечное перспективное
преобразование, заданное равенством (3-57), может быть получено конкатенацией
трех одноточечных перспективных преобразований, по одному на каждую
координатную ось. Создание трехточечной перспективы иллюстрируется на следующем
примере.
Пример 3-21 Трехточечное перспективное
преобразование
Для описанного в примере 3-18 куба
рассмотрим проекцию на плоскость после применения трехточечного
перспективного преобразования. Центры проекции находятся в точках и . Точки схода
находятся в ,
и . Матрица
преобразования равна
.
Преобразованные
координаты куба
.
Результат
показан на рис. 3-31b. Искаженный в результате
перспективного преобразования объект изображен на рис. 3-31с. Отметим, что
ребра на рисунке сходятся.
|
И снова получившийся вид
недостаточно информативен, хотя и математически корректен. Соответствующие
методы генерации перспективных видов обсуждаются в разд. 3-16.