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.