Проецирование пространственных сцен
Центральные проекции
Предположим, что центр проекции находится в точке , а картинная
плоскость совпадает с плоскостью
. Возьмем произвольную точку
изображаемого объекта
и определим ее проекцию на выбранную плоскость
(рис. 7.7).
Прямую, проходящую через точки и
, зададим в параметрическом виде:
![]() |
( 7.1) |
Теперь найдем точку пересечения этой прямой с картинной плоскостью. Она определяется из условия равенства нулю третьей координаты:
![c_z+t\cdot(z-c_z)=0,](/sites/default/files/tex_cache/142ac4ac255e72fecd3ce5f62df2e6ac.png)
![t](/sites/default/files/tex_cache/e358efa489f58062f10dd7316b65649e.png)
![t^*=\frac{c_z}{c_z-z}=\frac{1}{1-\frac{z}{c_z}}.](/sites/default/files/tex_cache/5dc2afd9c0860163928f09b8f7d1324c.png)
Подставляя это значение в формулу (7.1), мы получим координаты
проекции точки :
![]() |
( 7.2) |
Фактором, влияющим на перспективное изменение размеров, является
наличие координаты в знаменателе. Чем ближе оказывается точка к
центру проекции, тем больше знаменатель, а соответственно и координаты
точки.
Мы будем рассматривать ситуацию, когда центр проекции лежит на оси , а сама ось направлена от наблюдателя к проекционной плоскости,
т.е.
. Тогда формулы (7.2) приобретают вид
![]() |
( 7.3) |
В однородных координатах такое преобразование можно записать с
помощью двух операций. Сначала умножаем матрицу проективного
преобразования на исходную точку и получаем точку в четырехмерном
пространстве:
![]() |
( 7.4) |
Затем проецируем эту точку в пространство однородных координат путем деления на четвертую компоненту:
![(x^*,y^*,0,1)=(x/p,y/p,0,1), \quad p=1+z/d.](/sites/default/files/tex_cache/d41c654a44b44c8b4d8b7d6835a3c6f5.png)
Посмотрим теперь, что происходит с пучком параллельных прямых под
действием матрицы проекции. Пусть задан пучок прямых, параллельных
вектору . Тогда параметрическое уравнение прямой, принадлежащей этому
пучку, имеет вид
![\overrightarrow{r}=(x+at,y+bt,z+ct).](/sites/default/files/tex_cache/f52bad68aecdc317985508870d732a06.png)
Из формулы (7.4) следует, что в результате проецирования получим множество точек
![\left(
x+at,y+bt,0,1+\frac{z+ct}{d}
\right) .](/sites/default/files/tex_cache/f3a1a405bcb1028b90993d72f916cdb1.png)
Переходя к однородным координатам и умножив числитель и знаменатель
каждой дроби на , получим точки
вида
![\overrightarrow{r}_0=
\left(
d\frac{x+at}{d+z+ct},d\frac{y+bt}{d+z+ct},0,1
\right) .](/sites/default/files/tex_cache/e1440ff700309e78bb1953f7c704ff69.png)
Теперь в каждой компоненте вектора числитель и знаменатель поделим
на :
![\overrightarrow{r}_0=
\left(
d\frac{x/t+a}{(d+z)/t+c},d\frac{y/t+b}{(d+z)/t+c},0,1
\right) .](/sites/default/files/tex_cache/55c2d4a06c81f8229e5d1ff5a8ca986b.png)
Переходя к пределу при , получим точку
![\overrightarrow{r}_{\infty}=
\left(
\frac{da}{c},\frac{db}{c},0,1
\right) .](/sites/default/files/tex_cache/20d0bb50722bf9a6e19e23dfffa70cc2.png)
Таким образом, получаем, что после проецирования пучок параллельных
прямых пересекается в точке схода . Понятно, что у каждого пучка своя
точка схода. Если пучок прямых параллелен плоскости
, т.е.
, то
точка схода оказывается на бесконечности, а значит, прямые остаются
параллельными.
Для построения перспективной проекции с несколькими точками схода используется матрица перспективного преобразования без проецирования:
![P=
\begin{pmatrix}
1 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 \\
0 & 0 & 1 & 0 \\
1/d_1 & 1/d_2 & 1/d_3 & 1
\end{pmatrix} .](/sites/default/files/tex_cache/9855c26c487d824407cb9a2fc4dfa4a8.png)
Теперь точки пространства сначала подвергаются перспективному преобразованию, а затем осуществляется проекция.
Определим точки схода для прямых, параллельных осям координат. Для
прямых результатом проективного преобразования будет множество точек
, где
. При
получим точку с координатами
. При проекции на
плоскость
получим точку
. Пучок прямых
перейдет в
, а
точкой схода для него будет
, которая при проецировании перейдет в
точку, лежащую на оси
. Аналогично для пучка прямых, параллельных
оси
, получим точку схода на оси
. Эти три точки на плоскости
являются главными точками схода.