Движение над рельефом

 

Надо учитывать, что при движении над рельефом наблюдатель приподнят на высоту h.

 

Z(x,y) – Функция рельефа

P(XP,YP,ZP) – положение наблюдателя

 

Тогда в плане получим:

 

 

 

 

Таким образом, получаем следующие координаты наблюдателя с учетом того, что он приподнят над рельефом.

 

Реальность картинке придаёт линия горизонта. В случае отсутствия тангажа (наклон отрезка PL(наблюдателя)) и крена линия горизонта является горизонтальной. Расположить ее можно либо строго по середине, либо искусственно приподнять или опустить.

В случае наличия крена линия горизонта будет повернута на некоторый угол (в зависимости от угла крена). При наличии тангажа линия будет смещаться либо вниз, либо вверх. Таким образом, линия горизонта, нарисованная с учетом крена при наличии тангажа, смещается параллельно самой себе. Необходимо рассчитать точки у1 и у2 (их координаты).

 

Можно также интерполировать яркость закраски «неба» и «земли», прорисовывать отдельные элементы рельефа.

 

Удаление невидимых элементов трехмерных объектов.

Рисование рельефа.

 

Существует несколько алгоритмов:

 

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

 

 

 

2) Делим поле рельефа на сектора. В каждом секторе применяем первый алгоритм. (рис. 2)

 


 

3) Алгоритм с использованием буфера глубины. Синтез изображения в общем случае: алгоритм с использованием буфера глубины.

 

 
 

 

 


Суть метода: кроме плоскости изображения резервируем память, точно соответствующую объему изображения, а в буфер глубины записываем величину (g) равную удаленности точки объекта от наблюдателя. При обработки любой точки сравниваем удаленность точки с величиной, хранимой в буфере. В буфер глубины можно записывать Евклидово расстояние.

 

 

Можно восстановить пространственную координату и посчитать R для любой точки (нужно для прорисовки отрезка на поле изображения).

 

Если в буфер глубины записываем Евклидово расстояние, то получится:

В результате интерполяции Евклидово расстояние это середина отрезка. В буфер G записывать величину R при линейной интерполяции нельзя. Глубину (S) тоже нельзя записывать в буфер глубины, т. к. ее нельзя будет линейно интерполировать. Но в буфер глубины можно записать параметр глубины (h),т. к. h может быть линейно интерполирована в плоскости изображения.

 

, где A и B – любые числа

Для величины h вводим буфер глубины H. H-буфер – это некоторая область памяти. Она имеет разрядность. Размер этой области равен размеру изображения.

при ; Smax – задний план

 
 

при ; Smin – передний план

 

Все что находится за Smax и перед Smin отсекается. Пирамида видимости – это пространственная пирамида (все что находится в ней попадает в поле видимости). Если объект находится за пределами пирамиды видимости, то он не изображается.

h обладает рядом достоинств:

1) соответствие, т. е. Smin соответствует hmax, Smax соответствует hmin

удаленные элементы имеют меньшее значение h, приближенные элементы – большее значение h.

2) яркость можно связать с h. Что ближе более яркое, что дальше, то более темное.