алі до граней. Точніше, як вибрати одну з двох нормалей, що дивиться з об'єкта. Зазвичай ця проблема вирішується ще на етапі побудови 3D моделей - деякі пакети для 3D-моделювання заздалегідь записують вершини граней в порядку ABC так, щоб векторний добуток BA * CA і було нормаллю. Ще один спосіб - вибрати внутрішню точку для об'єкта (або вручну, або взяти його центр ваги, або будь-яким іншим способом - методів може бути придумано як завгодно) і використовувати її: якщо для цієї точки функція видимості позитивна, тобто грань нібито видно, то необхідно поміняти знак nx, ny і nz.
Розглянувши метод, слід зазначити, що для опуклих об'єктів цей метод повністю вирішує задачу про видалення невидимих ​​частин. Для неопуклих ж він дозволяє швидко і просто скоротити число граней, що підлягають подальшій перевірці на видимість і, власне, отрісовке. br/>
Обертання
Обертання об'єкта в основному є зміною координат вершин, тобто фактично завданням нових координат. У даному випадку його можна реалізувати досить простим методом - обчисленням нових координат, знаючи величину кута повороту, що зводиться до вирішення низки тривіальних тригонометричних завдань. p> Розглянемо для прикладу поворот точки (x, y, z) щодо осі z. У цьому випадку z не змінюється зовсім, а (x, y) змінюються так само, як і при повороті на площині відносно початку координат. Розглянемо, які координати отримає точки A 'в результаті повороту A (x, y) на деякий кут?. br/>В
Малюнок 4
Нехай
В
Нехай кут AOx дорівнює?, тоді з малюнка 4 видно, що
(? i) = x/r, sin (?) = y/r. br/>
Кут A'OA дорівнює за умовою?.
Звідси
x '= r * cos (? +?) = r * (cos (?) * cos (?)-sin (?) * sin (?)) =
= (r * cos (?)) * cos (?) - (r * sin (?)) * sin (?) =
= x * cos (?)-y * sin (?)) '= r * sin (? +?) = r * (cos (?) * sin (?) + sin (?) * cos (? )) =
= (r * cos (?)) * sin (?) + (r * sin (?)) * cos (?) =
= x * sin (?) + y * cos (?)
Розглядаючи випадок з тривимірним простором, таким чином
'= x * cos (?)-y * sin (?)' = x * sin (?) + y * cos (?)
z '= z
Аналогічно виводяться формули і для інших осей повороту (Ox, Oy). Поворот щодо довільної осі, що проходить через початок координат, можна зробити за допомогою цих поворотів - зробити поворот щодо Ox так, щоб вісь повороту стала перпендикулярна Oy, потім поворот щодо Oy так, щоб вісь повороту збіглася з Oz, зробити власне поворот, а потім зворотні повороти щодо Oy і Ox. В результаті чого відповідно отримуємо:
: = Y * cos (xv)-Z * sin (xv): = Y * sin (xv) + Z * cos (xv)
Тут Y, Z це координати вершини, а xv - кут повороту в градусах. Аналогічно вирішуються завдання для повороту по осі X:
: = X * cos (yv)-Z * sin (yv): = X * sin (yv) + Z * cos (yv)
І, відповідно, по осі Z:
: = X * cos (zv)...