Технічний проект.
Відсікання відрізка на площині прямокутним вікном
Якщо логічне & кодів обох кінців відрізка дорівнює нулю, то відрізок підозрілий, він може бути частково видимим мул і цілком невидимим; для нього потрібно визначити координати перетинів зі сторонами вікна і для кожної отриманої частині визначити тривіальну видимість або невидимість. При безпосередньому використанні описаного вище способу відбору цілком видимого або цілком невидимого відрізка… Читати ще >
Технічний проект. Відсікання відрізка на площині прямокутним вікном (реферат, курсова, диплом, контрольна)
Опис обраного підходу
Ідея алгоритму полягає в наступному.
Вікно відсікання і прилеглі до нього частини площині разом утворюють 9 областей. Кожній з областей присвоєний 4-х бітний код.
Дві кінцеві точки відрізка отримують 4-х бітні коди, які відповідають областям, в які вони потрапили. Значення бітів коду:
- 0 біт = 1 — точка лівіше прямокутного вікна;
- 1 біт = 1 — точка правіше прямокутного вікна;
- 2 біт = 1 — точка вище прямокутного вікна;
- 3 біт = 1 — точка нижче прямокутного вікна.
Визначення того чи лежить відрізок цілком всередині вікна або цілком поза вікном виконується наступним чином:
якщо коди обох кінців відрізка рівні 0 то відрізок цілком всередині вікна, відсікання не потрібне, відрізок при приймається як тривіально видимий;
якщо логічне & кодів обох кінців відрізка не дорівнює нулю, то відрізок цілком поза вікном, відсікання не потрібне, відрізок відкидається як тривіально невидимий;
якщо логічне & кодів обох кінців відрізка дорівнює нулю, то відрізок підозрілий, він може бути частково видимим мул і цілком невидимим; для нього потрібно визначити координати перетинів зі сторонами вікна і для кожної отриманої частині визначити тривіальну видимість або невидимість.
При розрахунку перетину використовується горизонтальність або вертикальність сторін вікна, що дозволяє визначити координату X або Y точки перетину без обчислень.
При безпосередньому використанні описаного вище способу відбору цілком видимого або цілком невидимого відрізка після розрахунку перетину необхідно було б обчислення коду розташування точки перетину.
В цілому схема алгоритму Сазерленда-Коена наступна:
- 1) Розрахувати коди кінцевих точок відрізка, що відсікається. У циклі повторювати пункти 2−6:
- 2) Якщо логічне & кодів кінцевих точок не дорівнює 0, то відрізок цілком поза вікном. Він відкидається і відсікання закінчено.
- 3) Якщо обидва коди дорівнює 0, то відрізок цілком бачимо. Він приймається і відсікання закінчено.
- 4) Якщо початкова точка всередині вікна, то вона міняється місцями з кінцевою точкою.
- 5) Аналізується код початкової точки для визначення сторони вікна з якою є перетин і виконується розрахунок перетину. При цьому обчислена точка перетину заміняє початкову точку.
- 6) Визначення нового коду початкової точки.