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.