10 + i +1], cyl [i +1], cyl [i], i +7);;
При використанні складних конструкцій в першу чергу вимагатиме перегляду алгоритм перевірки граней на видимість з боку спостерігача. Існує ряд простих рішень для покидька граней крім побудови нормалей. Можна скористатися В«алгоритмом художникаВ». Полягає він у наступному. Нехай є якийсь набір граней (тобто сцена), який потрібно намалювати. Виробляється сортування граней по віддаленості від камери. Далі виконується отрисовка всіх граней, починаючи з самих віддалених. Досить поширена характеристика віддаленості для грані ABC - це середнє значення z, mid_z = (A.z + B.z + Cz)/3. По суті це весь алгоритм. Просто, і зазвичай досить швидко. Але існує декілька проблем. При деякому розташуванні граней цей алгоритм взагалі не може дати правильного результату незалежно від порядку. При деякому розташуванні граней і використанні середнього значення z як характеристики віддаленості алгоритм дає неправильний результат (рис. 6). br/>В
Малюнок 6
У цьому випадку горизонтальну грань потрібно отрісовать другий, але за середнім значенням z вона лежить далі і таким чином виходить, що її потрібно вивести на екран першого. У підсумку, при використанні цього алгоритму отрісовиваємих взагалі всі грані сцени. І при великій кількості загороджують один одного граней буде витрачатися значно більша частина часу на виведення невидимих ​​зрештою частин. Тобто абсолютно даремно. У випадку з побудовою нормалі такого роду проблеми не виникає. Однак, метод нормалей буде неприйнятний для наступної стандартної ситуації:
В
Малюнок 7
В якості вирішення може бути використаний метод з використанням Z-буфера. Z-буферизація - в комп'ютерній тривимірній графіці це спосіб обліку віддаленості елемента зображення. Являє собою один з варіантів вирішення В«проблеми видимостіВ». Він дуже ефективний і практично не має недоліків, якщо реалізується апаратно тому досить ресурсоемок в програмному виконанні. Програмно існують деякі альтернативи, здатні конкурувати з ним: наприклад, двійкове розбиття простору (BSP), але вони також мають свої переваги і недоліки. Основний недолік Z-буферизації полягає в споживанні великого обсягу пам'яті: у роботі використовується так званий буфер глибини (Z-буфер). Z-буфер являє собою двовимірний масив, кожен елемент якого відповідає пикселу на екрані. Коли відеокарта малює піксель, його віддаленість прораховується і записується в осередок Z-буфера. Якщо пікселі двох змальованих об'єктів перекриваються, то їх значення глибини порівнюються, і малюється той, який ближче, а його значення віддаленості зберігається в буфер. Одержана при цьому графічне зображення носить назву z-depth карта, що представляє собою півтонове графічне зображення, кожен піксель якого може приймати до 256 значень сірого. За ним визначається віддаленість від глядача того чи іншого об'єкта тривимірної сцени. p> Висновок
Даний кур...