Щоб цього уникнути, слід показувати тільки лицьові грані, а невидимі грані видаляти. Для цього скористаємося алгоритмом Ньюли-Ньюела-Санчо, інакше називають алгоритм художника. Ідея алгоритму художника, полягає в тому, що, використовуючи впорядкованість граней по глибині, виводиться з зафарбовуванням грані, починаючи з далеких граней. При цьому межі, які виводяться пізніше, закривають собою невидимі частини більш далеких граней. Частина цього методу працює у просторі об'єкта, а частина в просторі зображення. Він також працює для паралельної проекції, тобто з урахуванням того, що вироблено перспективне перетворення. p align="justify"> Метод складається з трьох основних кроків:
. упорядкування всіх полігонів у відповідності з їх найбільшими z-координатами;
. дозвіл всіх невизначеностей, які виникають при перекритті z-оболонок багатокутників;
. промальовування кожного полігону, вироблена в порядку зменшення їх найбільшої z-координати.
Для знаходження середнього значення по координаті Z, необхідно скласти значення координати Z кожної з вершин полігону і поділити цю суму на кількість вершин. Це і буде середнє значення координати Z полігону. Далі створимо масив, що містить всі середні значення, і попарно будемо порівнювати їх. Якщо дане значення буде менше попереднього, то значить, що полігон знаходиться ближче до спостерігачеві, що а значить, буде малюватися в останню чергу. Таким чином, межі будуть з'являтися в порядку зменшення значення Z.
Даний алгоритм відрізняється надмірною простотою реалізації, і, як наслідок, недостатньо ефективний. Справді, коли тривимірна сцена складається з великої кількості об'єктів, в середньому половина полігонів буде не видна в поточному кадрі. А значить, їх відображення на екрані і не потрібно. Недолік "алгоритму художника" полягає в тому, що відображаються всі полігони. br/>
.3 Визначення особових і не лицьових граней за допомогою вектора нормалі
Для скорочення числа полігонів можна обчислити для кожної грані вектор нормалі, і по його значенню визначити межі, які будуть видні. Відразу варто відзначити те, що наша сцена складається з прозорого об'єкта і непрозорого, тому трохи модернізуємо даний алгоритм. p align="justify"> Ідея алгоритму полягає в тому, що за кутом між напрямком погляду і нормаллю до поверхні можна визначити розташування граней, лицьова вона або ж ні. Нормаль до поверхні знаходиться за допомогою трьох точок, так як через будь-які три точки можна провести площину. Координати вектора нормалі наступні: N (Nx, Ny, Nz). Три точки поверхні мають наступні координати: A (Ax, Ay, Az), B (Bx, By, Bz), C (Cx, Cy, Cz). Рівняння площини задається у вигляді:
Nx * X + Ny * Y + Nz * Z + d = 0.
В результаті отримаємо таку систему рівн...