Центральная перспективная проекция. Перспективные матрицы в графическом API или дьявол прячется в деталях

В центральных проекциях грани отображаемого объекта, параллельные картинной плоскости, изображаются без искажения формы, но с искажением размера.

Рисунок 24 Центральные проекции куба: а) одноточечная, б) двухточечная, в) трехточечная.

Центральные проекции любой совокупности параллельных прямых, которые не параллельны картинной плоскости, будут сходиться в точке схода . Точка схода прямых, параллельных одной из координатных осей, называетсяглавной точкой схода . Т.к. координатных осей три, то и главных точек схода не может быть больше трех.

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

Одноточечная проекция получается, когда картинная плоскость совпадает с одной из координатных плоскостей (или параллельна ей). Т.е., только одна ось координат не параллельна картинной плоскости и имеет главную точку схода.

Двухточечная проекция получается, когда только одна из координатных осей параллельна картинной плоскости. Две другие оси координат не параллельны картинной плоскости и имеют две главные точки схода. При изображении объектов, расположенных на поверхности земли, наиболее часто используется двухточечная проекция, при которой картинной плоскости параллельна вертикальная ось координат. Обе главные точки схода расположены на одной горизонтальной линии – линии горизонта (рис. 6.5). Притрехточечной проекции все три координатные оси не параллельны картинной плоскости и, следовательно, имеются три главные точки схода.

Рассмотрим более подробно случай одноточечного проецирования точки Р на плоскостьz = 0 с центром проецированияС , лежащим на осиz (рис.25).

Точка A проецируется на экран какA . Расстояние от наблюдателя до проекционной плоскости равноk. Необходимо определить координаты точкиA на экране. Обозначим ихx э иy э. Из подобия треугольниковA y A z N иy э ON находим, что

(x.9)

аналогично для x:

. (x.10)

Рис. 25. Вывод формул центральной проекции.

Рис. 26. Другой способ вычисления координат точек в центральной перспективной проекции.

Напомним, что k -это расстояние, а наблюдатель находится в точке N = (0,0,-k ). Если точку наблюдения поместить в начало координат, а проекционную плоскость на расстояниеa , как показано на рисунке 26, то формулы дляx э и y э примут вид:

,
(x.11)

Формулы (x.10) более удобны при необходимости простым образом приближать или удалять наблюдателя от проекционной плоскости. Формулы (x.11) требуют меньше времени для вычислений за счет отсутствия операции сложения.

Рассмотрим точку трехмерного пространства (a , b , c ). Если представить эту точку как однородное представление точки двумерного пространства, то ее координаты будут (a / c , b / c ). Сравнивая эти координаты со вторым видом формул, выведенных для центральной перспективной проекции, легко заметить, что двумерное представление точки с координатами (a , b , c ) выглядит как ее проекция на плоскостьz = 1, как показано на рис. 27.

Рис. 27. Проекция точки (a , b , c ) на плоскость z = 1.

Аналогично, рассматривая применение однородных координат для векторов трехмерного пространства, можно представить трехмерное пространство как проекцию четырехмерного пространства на гиперплоскость w = 1, если (x , y , z )(wx , wy , wz , w ) = (x , y , z , 1). .

В однородных координатах преобразование центральной перспективы можно определить матричной операцией. Эта матрица записывается в виде:

Покажем, что эта матрица определяет преобразование точки объекта, заданной в однородных координатах, в точку перспективной проекции (также в однородных координатах). Пусть p = (x , y , z ) – точка в трехмерном пространстве. Ее однородное представлениеv = (wx , wy , wz , w ). УмножимvнаP :

это в точности повторяет формулы (x.10), выведенные для центральной перспективы.

Из-за особенностей человеческого зрения к удаленным от наблюдателя объектам лучше применять перспективную проекцию, к достаточно близким (на расстоянии вытянутой руки) – ортографическую или аксонометрическую, а к еще более близким объектам – обратную перспективную проекцию.

Для создания стереоизображений используются две центральные проекции, центры которых совпадают с расположением глаз гипотетического наблюдателя, т.е. они расположены на некотором расстоянии друг от друга на прямой, параллельной картинной плоскости. После выполнения проецирования получают два изображения объекта – для левого и правого глаза. Устройство вывода должно обеспечивать подачу этих изображений к каждому глазу пользователя отдельно. Для этого может использоваться система цветных или поляризационных фильтров. Более сложные устройства вывода (например, шлемы) подают каждое из изображений на отдельные экраны для каждого глаза.

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

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

Рис. 3-31 Трехточечная перспектива, (а) Исходный куб; (b) перспективная проекция на плоскость ; (с) искаженный куб.

Для начала рассмотрим простой перенос объекта с последующим одноточечным проецированием на плоскость и с центром проекции в точке . Требуемое преобразование записывается в виде

, (3-59)

Рис. 3-32 Одноточечная перспективная проекция с переносом в , направлениях.

Уравнение (3-59) вместе с рис. 3-32 показывает, что перенос в направлениях и открывает дополнительные грани объекта. Перенос в обоих этих направлениях необходим, чтобы открыть три грани простого кубообразного объекта. На рис. 3-32 показаны результаты переноса вдоль прямой отцентрированного относительно начала координат куба и одноточечного проецирования на плоскость . Заметим, что для передней грани показываются истинные размер и форма.

Уравнение (3-59) также показывает, что перенос вдоль оси , т.е. к центру проекции или от него, приводит к явному изменению масштаба (из-за элемента ). Этот эффект соответствует физической реальности, так как объекты, находящиеся дальше от наблюдателя, выглядят более мелкими. Заметим, что при приближении центра проекции к бесконечности явление масштабирования исчезает. Этот эффект схематично показан на рис. 3-33. Как изображено на этом рисунке, объект может находиться с любой стороны от центра проекции. Если объект и плоскость проекции находятся по одну сторону от центра, то, как показано на рис. 3-33, получается прямое изображение. Если же объект и плоскость проекции лежат по разные стороны от центра, то получается перевернутое изображение.

Рис. 3-33 Эффект масштабирования при перемещениях вдоль оси для одноточечной перспективной проекции.

На рис. 3-34 показаны результаты перемещения объекта во всех трех направлениях. Здесь куб перемещается вдоль трехмерной прямой от к . Заметно очевидное увеличение размера, а также на всех видах заметно сохранение истинной формы, но не размера передней грани.

Эти идеи более подробно изложены в примере.

Пример 3-22 Одноточечная перспективная проекция с переносом

Рассмотрим отцентрированный относительно начала координат единичный куб со следующими координатными векторами

.

Переместим куб на 5 единиц в направлениях и и построим перспективную проекцию на плоскость с центром проекции в .

Из уравнения (3-59) получаем общую матрицу преобразования

.

Рис. 3-34 Одноточечная перспективная проекция, объединенная с переносами в , , направлениях.

Преобразованные координаты

.

Правый верхний объект на рис. 3-32 изображает этот результат.

Если исходный объект был перемещен на 5 единиц в направлениях , , и была построена одноточечная перспективная проекция на плоскость с центром проекции в , тогда из (3-59) следует, что общая матрица преобразования записывается в виде

.

Отметим общее масштабирование, задаваемое значением 0.75 в правом нижнем элементе матрицы преобразования.

Преобразованные координаты равны

.

Результат показан в виде верхнего правого объекта на рис. 3-34.

Несколько граней также будет видно, если использовать вращение объекта. Один поворот откроет по крайней мере две грани объекта, тогда как два и более поворотов вокруг разных осей откроют, как минимум, три грани.

Матрица преобразования для поворота вокруг оси на угол и последующего одноточечного перспективного проецирования на плоскость с центром проекции в :

. (3-60)

Аналогичным образом матрица преобразования для поворота вокруг оси на угол и последующего одноточечного перспективного проецирования на плоскость с центром проекции в точке имеет вид:

. (3-61)

В обоих уравнениях (3-60) и (3-61) не равны нулю два отвечающих за перспективное преобразование (перспективных) элемента в четвертом столбце матрицы преобразования. Таким образом, один поворот вокруг главной оси, перпендикулярной той оси, на которой лежит центр проекции, эквивалентен двуточечному перспективному преобразованию. При повороте вокруг оси, на которой лежит центр проекции, такого эффекта нет. Заметим, что для одного поворота перспективный элемент для оси вращения остается неизменным, например, в уравнениях (3-60) и (3-61) элементы и соответственно равны нулю.

В общем случае вращение вокруг главной оси не открывает необходимого для адекватного трехмерного представления числа граней - как минимум, трех. Для этого оно должно быть скомбинировано с перемещением вдоль оси. Следующий пример иллюстрирует это.

Пример 3-23 Двуточечное перспективное проецирование с использованием поворота вокруг одной главной оси

Рассмотрим проекцию на плоскость с центром в точке куба с рис. 3-35а, повернутого вокруг оси на угол , чтобы открылась левая грань, и перемещенного на единицы вдоль , чтобы открылась верхняя грань.

Используя уравнение (3-38) с , уравнение (3-47) с и уравнение (3-14) с , получим

.

Преобразованные координаты равны

.

Результат показан на рис. 3-35b. Искажение появляется из-за того, что центр проекции расположен слишком близко к кубу. Отметим схождение параллельных осям и прямых линий к точкам схода, лежащим на оси . Эти точки схода определяются в примере 3-25 из разд. 3-17.

Рис. 3-35 Двуточечная перспективная проекция с поворотом вокруг одной оси.

Аналогичным образом трехточечное перспективное преобразование выполняется с помощью вращения вокруг двух или более главных осей и последующего одноточечного перспективного преобразования. Например, поворот вокруг оси , потом поворот вокруг оси и перспективное проецирование на плоскость с центром проекции в точке имеет следующую матрицу преобразования

.

Результат изображен на рис. 3-36.

Рис. 3-36 Трехточечная перспективная проекция с поворотом вокруг двух осей.

Из этих результатов становится ясно, что одно-, дву- или трехточечное перспективное преобразование можно сконструировать с помощью поворотов и переносов вокруг и вдоль главных осей с последующим одноточечным перспективным преобразованием с центром проекции, расположенным на одной из главных осей. Эти результаты также справедливы для поворота вокруг произвольной оси в пространстве. Следовательно, при использовании в графической системе парадигмы с фиксированным центром проекции и манипулируемым объектом, необходимо обеспечить только построение одноточечной перспективной проекции на плоскость с центром проекции на оси .

В центральных проекциях грани отображаемого объекта, параллельные картинной плоскости, изображаются без искажения формы, но с искажением размера.

Рисунок 24 Центральные проекции куба: а) одноточечная, б) двухточечная, в) трехточечная.

Центральные проекции любой совокупности параллельных прямых, которые не параллельны картинной плоскости, будут сходиться в точке схода . Точка схода прямых, параллельных одной из координатных осей, называется главной точкой схода . Т.к. координатных осей три, то и главных точек схода не может быть больше трех.

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

Одноточечная проекция получается, когда картинная плоскость совпадает с одной из координатных плоскостей (или параллельна ей). Т.е., только одна ось координат не параллельна картинной плоскости и имеет главную точку схода.

Двухточечная проекция получается, когда только одна из координатных осей параллельна картинной плоскости. Две другие оси координат не параллельны картинной плоскости и имеют две главные точки схода. При изображении объектов, расположенных на поверхности земли, наиболее часто используется двухточечная проекция, при которой картинной плоскости параллельна вертикальная ось координат. Обе главные точки схода расположены на одной горизонтальной линии – линии горизонта (рис. 6.5). При трехточечной проекции все три координатные оси не параллельны картинной плоскости и, следовательно, имеются три главные точки схода.

Рассмотрим более подробно случай одноточечного проецирования точки Р на плоскость z= 0 с центром проецирования С , лежащим на оси z (рис.25).

Точка A проецируется на экран как A ¢. Расстояние от наблюдателя до проекционной плоскости равно k. Необходимо определить координаты точки A ¢ на экране. Обозначим их x э и y э. Из подобия треугольников A y A z N и y э ON находим, что

(x.9)

аналогично для x:

Рис. 25. Вывод формул центральной проекции.

Рис. 26. Другой способ вычисления координат точек в центральной перспективной проекции.

Напомним, что k -это расстояние, а наблюдатель находится в точке N = (0,0,-k ). Если точку наблюдения поместить в начало координат, а проекционную плоскость на расстояние a , как показано на рисунке 26, то формулы для x э и y э примут вид:

Формулы (x.10) более удобны при необходимости простым образом приближать или удалять наблюдателя от проекционной плоскости. Формулы (x.11) требуют меньше времени для вычислений за счет отсутствия операции сложения.

Рассмотрим точку трехмерного пространства (a,b,c ). Если представить эту точку как однородное представление точки двумерного пространства, то ее координаты будут (a/c,b/c ). Сравнивая эти координаты со вторым видом формул, выведенных для центральной перспективной проекции, легко заметить, что двумерное представление точки с координатами (a,b,c ) выглядит как ее проекция на плоскость z = 1, как показано на рис. 27.



Рис. 27. Проекция точки (a,b,c ) на плоскость z = 1.

Аналогично, рассматривая применение однородных координат для векторов трехмерного пространства, можно представить трехмерное пространство как проекцию четырехмерного пространства на гиперплоскость w = 1, если (x,y,z )®(wx,wy,wz,w ) = (x,y,z, 1). .

В однородных координатах преобразование центральной перспективы можно определить матричной операцией. Эта матрица записывается в виде:

Покажем, что эта матрица определяет преобразование точки объекта, заданной в однородных координатах, в точку перспективной проекции (также в однородных координатах). Пусть p = (x,y,z ) – точка в трехмерном пространстве. Ее однородное представление v = (wx,wy,wz,w ). Умножим v на P :

это в точности повторяет формулы (x.10), выведенные для центральной перспективы.

Из-за особенностей человеческого зрения к удаленным от наблюдателя объектам лучше применять перспективную проекцию, к достаточно близким (на расстоянии вытянутой руки) – ортографическую или аксонометрическую, а к еще более близким объектам – обратную перспективную проекцию.

Для создания стереоизображений используются две центральные проекции, центры которых совпадают с расположением глаз гипотетического наблюдателя, т.е. они расположены на некотором расстоянии друг от друга на прямой, параллельной картинной плоскости. После выполнения проецирования получают два изображения объекта – для левого и правого глаза. Устройство вывода должно обеспечивать подачу этих изображений к каждому глазу пользователя отдельно. Для этого может использоваться система цветных или поляризационных фильтров. Более сложные устройства вывода (например, шлемы) подают каждое из изображений на отдельные экраны для каждого глаза.

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

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

На фотографиях, картинах, экране изображения кажутся нам естественными и правильными. Эти изображения называют перспективными. Свойства их таковы, что более удаленные предметы изображаются в меньших масштабах, параллельные прямые в общем случае непараллельны. В итоге геометрия изображения оказывается достаточно сложной, и по готовому изображению сложно определить размер тех или иных частей объекта.

Обычная перспективная проекция — это центральная проекция на плоскость прямыми лучами, проходящими через точку — центр проецирования. Один из проецирующих лучей перпендикулярен к плоскости проецирования и называется главным. Точка пересечения этого луча и плоскости проекции — главная точка картины.

Существует три системы координат. Обычно программист работает и держит данные о геометрических объектах в мировых координатах. Для повышения реалистичности при подготовке к выводу изображения на экран данные об объектах из мировых координат переводят в видовые координаты. И только в момент вывода изображения непосредственно на экран дисплея переходят к экранным координатам, которые представляют собой номера пикселов экрана.

Первые две системы могут использоваться в многомерных системах координат, но последняя только в двухмерной. Операции являются необратимыми, то есть из двухмерной картинки-проекции невозможно восстановить трехмерное изображение.

Матрица общего перспективного преобразования

В этой матрице элементы a , d , е отвечают за масштабирование, m , n , L — за смещение, p , q , r — за проецирование, s — за комплексное масштабирование, х — за вращение.



Понравилась статья? Поделитесь с друзьями!