Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KonspektKG_Ukr (1).doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.26 Mб
Скачать

7.5.5. Алгоритм, що використовує z-буфер

Іншим алгоритмом, навіть більш простим, чим попередній, є алгоритм, побудований на основі z-буфера, чи, точніше, алгоритм, що працює в просторі зображення і використовує буфер глибини. Для нього потрібно не тільки буфер регенерації, у якому запам'ятовуються значення яскравості, але також і Z-буфер, куди можна поміщати інформацію про координату Z для кожного пeла. Спочатку в z-буфер заносяться максимально можливі значення Z, а буфер регенерації заповнюється значеннями пeлiв, що описують фон. Потім кожен багатокутник перетвориться в растрову форму і записується в буфер регенерації, при цьому, однак, не виробляється початкового упорядкування, що було необхідно в алгоритмі сортування по глибині. При розкладанні в растр для кожної крапки багатокутника виконуються наступні кроки:

  1. Обчислення глибини багатокутника z(x, у) у крапці (x, у).

  2. Якщо z(x, у) менше, ніж значення Z-буфера в позиції (x, у), то

а) z(x, у) заноситься в елемент (x, у) Z-буфера і

б) значення пeла, що має багатокутник у розглядуємої крапці, міститься в елемент (x, у) буфера регенерації.

Якщо умова кроку 2 виконується, вважається, що крапка багатокутника розташована ближче до спостерігача, чим точка.значення яскравості якої знаходиться в даний момент у позиції (x, у) буфера регенерації. Тому записуються нові значення глибини і яскравості.

Весь процес являє собою не більш ніж пошук серед безлічі пар {Zj(x, у), Vt(x, у)} для заданих x і у з метою знайти мінімальне zt. При успішному пошуку мінімальне зі значень, що зустрілися, z міститься в Z-буфер для кожної позиції (x, у]. Черговість появи об'єктів на екрані визначається упорядкованістю, з яким обробляються багатокутники, т.e.они можуть зображуватися не обов'язково в напрямку від переднього плану до заднього чи від заднього до переднього.

Цей алгоритм має недолік: для нього потрібно великий обсяг пам'яті під Z-буфер. Однак реалізація алгоритму дуже проста. Експлуатаційні характеристики залишаються увесь час майже постійними, оскільки в середньому з ростом числа багатокутників у видимому обсязі зменшується число пeлiв, що покриваються одним багатокутником. Тому середній розмір кожної безлічі

пар, серед яких провадиться пошук, практично постійний .

Нехай деякий заданий багатокутник порядково перетворюється в растрову форму. Обчислення координати z для кожної крапки сканірующого рядка можна спростити, скориставшись тим, що багатокутник плоский. Звичайно для визначення Z рівняння площини

Ax+By+Cz+D=0 (7.24) вирішується щодо цієї змінної

( 7.25 ) Тепер, якщо в крапці (x, у) у рівнянні (7.25 ) виходить значення Z 1, то в крапці (x+Δx, у) ( 7.26 ) Відношення А/С є постійним, a Δx=l, тому, якщо задана глибина в крапці (x, у), для обчислення глибини в крапці (х+1, у) потрібно виконати лише одне вирахування.


Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]