- •1.2.Сфери застосування комп'ютерної графіки
- •1.3.Стандарти машинної графіки
- •1.3.5. Функціональні стандарти
- •1.3.6 Рівень прикладної програми
- •2.3.Стандарт gks.
- •2.3.1 Призначення стандарту gks
- •2.3.2. Система програмування gks
- •2.5.Графічні станції
- •2.5.1 Концепції робочої станції
- •3.3 Однорідні координати і матричне представлення двовимірних перетворень
- •Рівняння масштабування (3.6) у матричній формі в однорідних координатах записуються у виді
- •3.4 Композиція двовимірних перетворень
- •4.2. Проектування.
- •4.4 Перетворення проектування. Рівнобіжні орфографічні проекції
- •4.5 Ортографічні аксонометричні проекції
- •4.6. Визначення кутів φ і θ для різних видів аксонометричних проекцій
- •Для прямокутної ізометрії коефіцієнти перекручувань по осях однакові
- •4.7. Косокутні проекції •
- •4.8. Матричне представлення тривимірних перетворень
- •4.9. Композиція тривимірних перетворень
- •5.1.1. Явне завдання багатокутників
- •5.1.2. Завдання багатокутників за допомогою покажчиків у список вершин
- •5.1.3. Явне завдання ребер
- •5.2. Рівняння площини
- •5. 3.1. Параметричні кубічні криві
- •5.4.Формати Безьє , Ерміта і в-сплайни.
- •5.4.1. Форма Ерміта
- •5.4.3. Форма b-сплайнів
- •5.5.1. Форма Ерміта
- •5.5.2. Форма Безье
- •5.6. Перетворення кривих і шматків поверхонь
- •5.7. Обчислення крапок на бікубичній поверхні
- •6.1 Методи створення реалістичних зображень тривимірних объектів.
- •Малюнок 6.1 - Класи моделей геометричних об'єктів
- •6.4. Дифузійне відображення і розсіяне світло.
- •6.3. Дзеркальне відображення
- •6.4.Модель Торренса-Сперроу та інші.
- •7.1 Призначення н сфера застосування алгоритмів растрової графіки
- •7.4.Алгоритми заповнення кольором області : рекурсивний, з затравкою. 7.4.1 Визначення і класифікація областей і алгоритмів
- •7.4.2 Простий алгоритм заповнення з запалом
- •7.5.2. Відокремлення крапок.
- •7.5.3. Відокремлення відрізків .
- •7.5.3 Алгоритм Коена - Сазерленда
- •7.5.4. Алгоритм сортування по глибині
- •7.5.5. Алгоритм, що використовує z-буфер
- •7.5.6. Алгоритми порядкового сканування
- •7.5.7. Алгоритми розбивки області
- •8.1. Алгоритм сортування по глибині
- •7.5.5. Алгоритм, що використовує z-буфер
- •7.5.6. Алгоритми порядкового сканування
- •8.3. Алгоритми розбивки області
- •9.1 Графічний дисплей з довільним скануванням екрана
- •9.1.1 Векторний дисплей
- •9.3. Плоттери з довільним скануванням видової поверхні
- •9.4. Маніпулятори введення інформації і керування її положенням на екрані дисплея
7.5.4. Алгоритм сортування по глибині
У цьому алгоритмі, розробленому Ньюэлом, Ньюэлом і Санча [341], застосовується простий підхід, що складається з трьох кроків:
Упорядкування всіх багатокутників відповідно до їхніх найбільших z-координат.
Вирішення усіх невизначеностей, що виникають при перекритті z-оболонок.
Перетворення кожного з багатокутників у растрову форму, вироблене в порядку зменшення їх найбільшої z- координати.
Основна ідея алгоритму полягає в упорядкуванні багатокутників відповідно до їхньої далекості від точки зору, а також у розміщенні цих багатокутників у буфері регенерації в порядку убування відстані. Найближчі багатокутники перетворяться в растрову форму останніми і закривають більш віддалені багатокутники, оскільки записуються в буфер регенерації поверх старих. При розкладанні кожного багатокутника в растр значення його пелів обчислюються з використанням одного з правил тонового чи колірного зафарбування,. Розглянутий алгоритм має властивості алгоритмів, що працюють у просторі зображення й у просторі об'єкта: деякі його кроки виконуються в першому просторі, а деякі — у другому.
Цей
алгоритм може легко працювати з явним
пріоритетом.
Пріоритет відіграє роль максимального
значення
z,
причому невизначеностей, зв'язаних із
глибиною, у цьому
випадку може не бути, оскільки вважається,
що кожному пріоритету відповідає своя
площина з постійною координатою
м.
На
мал. 7.16 показані деякі типи невизначеностей,
необхідність
в дозволі яких може виникнути на кроці
2. Як
же усуваються ці невизначеності?
Позначимо багатокутник,
що знаходиться наприкінці упорядкованого
списку багатокутників,
через Р.
До
відображення в буфер регенерації цей
багатокутник
Мал. 7.16. Випадки, при яких перекриваються оболонки багатокутників.
необхідно порівняти з кожною гранню Q, z-оболонка якої перекриває z-оболонку багатокутника Р. Перевірка складається не більш ніж з п'яти кроків (тестів), що виконуються в порядку зростання складності. Як тільки на кожнім із кроків видається позитивна відповідь, P відразу перетвориться в растрову форму. Цими п'ятьма тестами є наступні:
х-оболонки багатокутників не перекриваються, тому самі багатокутники теж не перекриваються;
у-оболонки багатокутників не перекриваються, тому самі багатокутники теж не перекриваються. (Відзначимо, що в тестах 1 і 2, узятих у сукупності, оболонки розглядаються тому вигляді, як були введені .)
P цілком лежить з тієї сторони від площини Q, що далі від точки зору (цей тест дає негативна відповідь у випадку а на мал. 7.16 і позитивна відповідь у ситуації, показаної на мал. 7.17).
Q цілком знаходиться з тієї сторони від площини P, що ближче до точки зору (цей тест дає негативна відповідь у випадку а на мал. 7.16 і позитивна відповідь у ситуації, показаної на мал. 7.18).
Проекції багатокутників на площину xy (екран) не перекриваются (це визначається шляхом порівняння ребер одного багатокутника з ребрами іншого).
Якщо у всіх п'ятьох тестах отриманий негативна відповідь, ми припускаємо, що P дійсно закриває Q, тому поміняємо P і Q місцями в списку, позначивши при цьому, що багатокутник Q був переміщений на нове місце наприкінці списку. У випадку а на мал. 15.6 так воно і є: якщо ми порівняємо Q з P, то знайдемо за допомогою тесту 3 (де P і Q помінялися місцями), що багатокутник Рповинен перетворюватися в растрову форму першим. У випадках же б и e на мал. 7.16 (оскільки не існує площини, поділяючої багатокутники) багатокутник Q рано чи пізно прийдеться знову переміщати в списку, і алгоритм зациклиться.
Щоб уникнути зациклення, введемо обмеження, відповідно до якого багатокутник, перенесений у кінець списку
(і, отже, позначений), не може піддаватися повторному переміщенню. Замість цього багатокутник P чи Q розсікається на дві частини площиною іншого багатокутника . Первісний багатокутник відкидається, а дві його частини включаються у відповідні місця упорядкованого списку, і алгоритм продовжує працювати, як колись.
За допомогою такого алгоритму багатокутники, що знаходяться з задньої сторони об'єкта, зображуються першими, але потім вони можуть бути закриті. Це може допомогти спостерігачу зрозуміти просторову структуру об'єкта, однак звідси випливає, що деякі багатокутники будуть без необхідності перетворюватися в растрову форму. Алгоритм погано пристосований для використання на растрових фільміруючих пристроях, оскільки фільм, проекспонірований під дією деякого багатокутника, не можна «разэкспонировать», якщо пізніше на цей багатокутник наложится інший.
За допомогою алгоритму сортування по глибині можна стирати також і невидимі ребра. Спочатку в буфер регенерації заносяться деякі значення V0. При розкладанні багатокутника в растр його ребрам привласнюється деяке інше значення Vi, а усі внутрішні пэлы встановлюються в V0 Якщо багатокутник перекриває інший багатокутник, що раніше вже був перетворений у растрову форму, при установці внутрішності нового багатокутника в V0 будуть стерті ребра попереднього багатокутника. Подібний підхід можна використовувати й в інших алгоритмах, розглянутих у цій главі.
Згадані вище алгоритми зображення однозначних функцій двох змінних діють так само, як і алгоритм впорядкування по глибині, лише обробка в цих випадках проводиться з переднього плану (мінімальні значення z) до заднього. Сортування, як таке, відсутне, оскількифункція однозначна. При зображенні кожної нової грані поверхні, яка представляє функцію, малюється тільки та частина цієї грані, яка попадає за межі зовнішньої грані фігури , утвореної раніше розглянутими гранями. Зовнішня границя потім відповідним чином розширюється. У новому алгоритмі Сечреста і Гринберга обробка виробляється знизу нагору, а не попереду назад 1416].
