загрузка...
загрузка...
На головну

Формалізація функцій відсікання

Дивіться також:
  1. Pointer_to_object) .class_id :: member_function_id (arguments) // для функцій
  2. Безусловнорефлекторного, умовнорефлекторні, гуморальні механізми регуляції статевих функцій.
  3. Бюджет являє собою форму освіти і витрачання фонду грошових коштів, призначених для фінансового забезпечення завдань і функцій держави.
  4. Залежно від функцій, покладених на конкретний комп'ютер, в його операційній системі може бути відсутнім або клієнтська, або серверна частини.
  5. Взаємозв'язок загальних функцій менеджменту
  6. Вікові особливості функцій зовнішнього дихання
  7. Вікові особливості функцій нирок
  8. Питання 17. Форми і методи здійснення функцій гос-ва.
  9. Тимчасова оцінка грошових потоків на основі функцій складного відсотка. Складний відсоток. Дисконтування.
  10. Тимчасова оцінка грошових потоків на основі функцій складного відсотка. Складний відсоток. Дисконтування.
  11. Тимчасова оцінка грошових потоків на основі функцій складного відсотка. Поточна вартість ануїтету. Періодичний внесок на погашення кредиту.
  12. Всі частини цілого підпорядковані спільної мети - вони спільно виконують ряд функцій, необхідних їх користувачеві.

Одна з найперших операцій - відсікання видимого обсягу. Функцію відсікання також потрібно формалізувати, так як необхідно виконати велику кількість порівнянь.

0 Крапка. Якщо мова йде про точку, то необхідно перевірити три умови:

1) Xmin ? X ? Xmax

2) Ymin ? Y ? Ymax

3) Zmin ? Z ? Zmax

Це вже шість порівнянь. Якщо не виконається хоча б одна з умов, то точка відкидається. Але складніше все для відрізка.

0 відрізок.

а) Кращий випадок, коли відрізок усередині.

Аксіома: якщо обидва кінці відрізка лежать всередині видимого обсягу, то відрізок зберігається цілком.

б) Якщо А - всередині, В - поза, то необхідно шукати точку перетину з кордоном і усікати.

в) Обидві поза.

У другому випадку шукаємо дві точки перетину і буде скорочуватися.

Для пошуку точок перетину слід вирішувати систему трьох рівнянь з трьома невідомими (в параметричному вигляді, де t змінюється від 0 до 1). Але знайти просто точки перетину недостатньо. Треба вирішувати проблему всередині - зовні. З точки зору геометрії для випадку б) береться за будь-якої довільної точки на двох кінцях, тобто для одного шматка підставляємо її параметри видимого обсягу, визначаємо, належить чи ні. Для другого шматка відрізка виконувати підстановку в рівняння не обов'язково, так як одна вже належить.

У разі в) необхідно виконати як мінімум дві перевірки. З такою ж підстановкою в рівняння прямої в просторі. Тобто ми отримуємо:

1) Величезне число обчислювальних операцій.

2) Крім того, може так виявитися, що відрізок паралельний площині, в результаті, нічого не вийде.

Розроблено ряд алгоритмів спрощення виконання функцій відсікання.

1. Алгоритм Коена-Сазерленда. Початкові вимоги були введені ними спочатку. На основі цих вимог і приймається рішення відкинути або зберегти повністю відрізок, або потрібно виконати додатковий аналіз. До кінців відрізка привласнюється формальний двійкового коду. Він складається з чотирьох біт для двомірного зображення і з шести біт для тривимірного зображення.

1-ий біт дорівнює 1, якщо точка вище вікна

2ий біт дорівнює 1, якщо точка нижче вікна

3ий біт дорівнює 1, якщо точка праворуч від вікна

4-ий біт дорівнює 1, якщо точка зліва від вікна

Для тривимірного зображення:

5ий біт дорівнює 1, якщо точка ззаду видимого обсягу

6ой біт дорівнює 1, якщо точка спереду видимого обсягу

     
     
     

Відрізок точно розташований всередині (цілком), якщо обидва коди нульові. Його можна точно відкинути, якщо обидва кінці або вище вікна, або нижче вікна (2ий біт дорівнює 1), або ліворуч від вікна, або праворуч від вікна. Така логічна функція мінімізована і отримана: якщо додавання кодів відрізків не дорівнює 0, то відрізок відкидається цілком, а якщо дорівнює 1, то можна однозначно сказати, чи треба шукати точки перетину. Більшість мов дозволяє працювати з окремими бітами слів і треба зробити 4 порівняння і одне логічне додавання. Таким чином, ми отримуємо велику економію обчислювальних операцій. Алгоритм Коена-Сазерленда, як і інші ефективний в двох випадках:

1) Більшість відрізків зображення лежать всередині видимого обсягу.

2) Або коли більшість відрізків зображення лежать поза видимим обсягу.

Реально перетинається з межами незначна частина. Якщо у зображення більша частина відрізків перетинається з межами, то економії принципово мало. Перевірку паралельності виконувати не треба. Паралельні прямі відкидаються за ознаками коду, сума коду дорівнює 0.

Метод пошуку - рівняння прямої в параметричної формі з урахуванням того, що видові площині мають 0, 1.


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

Перші чотири - це бічні грані, а останні два - дві інші.

Всього відомо приблизно 20 алгоритмів для реалізації функції відсікання. Цей алгоритм найбільш доступний.

Довільна центральна проекція. «-- попередня | наступна --» Видалення прихованих ліній у поверхні.
загрузка...
© om.net.ua