10.2.
Рассмотрим пример:

Координаты точек: ![]()
Наблюдатель
смотрит вертикально вниз.
Для
центра проекции левого глаза и центра проекции правого глаза мы имеем
следующие
координаты:


![]()
В
системе координат ОХY:

Используя
эти формулы получаем:
;
, где
р –
полупаралакс:
, где F – фокусное расстояние![]()
Найдём
значение
:

;
Для
каждой точки можно наити изображение для левого и правого снимка.
Пусть
у нас есть:

Поле высот Z(X,Y)
Фотография V(X,Y)
Для
того чтобы получить желаемое необходимо:
Обоити
все точки поля V и для каждой из них, обратившись в поле Z, получим
высоту
Z(X,Y), уже имея яркость V(X,Y). Зная высоту, подставим её в формулу
полупаралакса. Затем в левое поле записываем яркость V в точку (X-p,Y), а в
правое
поле записываем яркость V в точку (X-p,Y).
Недостаток
этого механизма:
При
заполнении Vл и Vп некоторые точки могут быть не заполнены.
В
качестве исходных данных мы задаём минимальный и максимальный полупа-
ралакс:
![]()
Для
рассматриваемой задачи:
![]()
от размера
изображения по горизонтали (т.е. от
)
Решив
следующую систему, можно найти B и F:

И
далее подставить их в формулу полупаралакса:
, где

, где Zp – высота наблюдателя
![]()
Отсюда
следует следующее:

А
при
:

Далее
вместо поля вывода будем использовать буфер глубины.
В
буфере глубины содержится информация об удалённости точки от наблюда-
теля,
а в поле вывода тоже фактически содержится информация об отдалённос-

ти точки (о высоте).

Используя
формулу :
, которая была
получена ранее получаем, что:
, а так как
, то
;

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


С помощью буфера
глубины можно синтезировать изображение: