- •Http://antibotan.Com/ - Всеукраїнський студентський архів розділ 1. Координатні перетворення та проекції
- •1.1. Афінна геометрія
- •1.1.1. Афінні перетворення точок у просторі
- •1.1.2. Перетворення ліній та площин у просторі
- •1.2. Перспективно-проекційна геометрія
- •1.2.1. Однорідні координати
- •1.2.2. Проектування тривимірних об’єктів
- •1.2.3. Паралельні проекції
- •1.2.4. Центральні проекції
- •1.2.5. Неозначені точки
- •1.2.6. Одноточкова перспективна проекція
- •1.2.7. Двоточкова перспективна проекція
- •1.2.8. Триточкова перспективна проекція
- •Розділ 2. Просторові криві
- •2.1. Геометрія просторових кривих
- •2.1.1. Параметричне і непараметричне зображення кривих
- •2.1.2. Дотична, головна нормаль і бінормаль до кривої
- •2.1.3. Кривина, закручування кривої та формули Френе
- •2.2. Побудова плоских кривих
- •2.2.1. Конічні переріз
- •2.2.2. Трансцендентні криві
- •2.3. Кубічні сплайни
- •2.3.1. Сплайнова функція однієї змінної
- •2.3.2. Сплайнова функція в тривимірному випадку
- •Дослідження гладкості кривої
- •2.3.4. Граничні умови
- •2.4. Кубічні сплайни Без’є
- •2.5. Базис Бернштейна-Без’є
- •2.5.1. Геометричні властивості поліномів Бернштейна
- •2.5.2. Часткові випадки
- •2.6. Апроксимація на основі b-сплайнів
- •2.6.1. Головні властивості b-сплайнів
- •2.6.2. Базисні функції
- •2.6.3. Вузловий вектор
- •2.6.4. Приклади застосування b-сплайнів
- •2.7. Раціональні криві
- •2.7.1. Головні принципи раціональних кривих
- •2.7.2. Раціональні квадратичні сегменти конічного перерізу
- •2.7.3. Раціональні криві Без’є
- •Розділ 3. Опис і побудова поверхонь
- •3.1. Геометрія поверхонь
- •3.1.1.Поняття поверхні, дотична площина до поверхні
- •3.1.2. Перша квадратична форма
- •3.1.3. Друга квадратична форма поверхні
- •3.1.4. Нормальна кривина поверхні
- •3.1.5. Перетворення параметрів поверхні
- •3.2. Утворення і зображення поверхонь
- •3.2.1. Класифікація поверхонь
- •3.2.2. Лінійчаті поверхні
- •3.3. Поверхні Без’є
- •3.3.1. Параметричне рівняння поверхні Без’є
- •3.3.2. Властивості ділянок поверхні Без’є
- •3.4.1. Параметричні рівняння ділянок в-сплайн поверхні
- •3.4.2. Властивості ділянок бікубічних в-сплайнповерхонь
- •Розділ 4. Теоретичні основи та головні алгоритми растрової графіки
- •4.1. Створення базових геометричних форм
- •4.1.1. Пікселі
- •4.1.2. Рисування ліній
- •Input (x1,y1),(x2,y2)
- •4.1.3. Побудова кола
- •Input (r)
- •4.1.4. Побудова еліпса
- •4.2. Вирізання
- •4.2.1. Алгоритм серединної точки
- •4.15. Лінії до вирізання 4.16. Лінії після обрізання
- •4.2.2. Алгоритм Коена-Сазерленда
- •4.2.3. Алгоритм Лянга - Барського
- •4.3 Вирізання областей
- •4.3.1. Базовий матеріал
- •4.3.2. Алгоритм Сазерленда - Ходгмана
- •4.3.3. Алгоритми Сазерленда-Ходгмана вирізання поверхонь
- •Розділ 5. Застосування пакетів matlab у компютерній графіці
- •5.1. Головні відомості про matlab
- •5.1.1. Інтерфейс Matlab
- •5.1.2. Програмування в Matlab
- •If умова
- •5.1.3. Створення і застосування м-файлів
- •5.1.4. Робота з матрицями
- •5.2. Графіка в Matlab
- •5.2.1. Визначення точки споглядання
- •5.2.2. Об'єкти дескрипторної графіки
- •5.2.3. Побудова графіків. Команди Plot, Plot3
- •5.2.4 Примітиви
- •View(3); % 11
- •5.2.5. Алгоритми для примітивів
- •Image(x1,y,colour) % Lighting pixel
- •Image(X,y1,colour) % Lighting pixel
- •Image(X,y,colour) % Lighting pixel
- •Image(X,y-2*I,colour) % Lighting pixel
- •Image(X,y,colour) % Lighting pixel
- •Image(X-2*I,y,colour) % Lighting pixel
- •5.3. Перетворення
- •5.3.1. Геометричні перетворення
- •View(3);
- •5.3.2. Проекції тривимірного простору в
- •View(0,90);
- •View(3)
- •5.4. Вирізання
- •5.4.1. Алгоритми вирізання
- •5.4.2. Інші підходи
- •5.5. Зображення плоских кривих
- •5.5.1. Команда spline
- •5.5.2. Команда pchip
- •Список літератури
- •Покажчик
4.2. Вирізання
Під словом вирізання (кліпінг) ми розуміємо обрізання форми згідно з периметром вікна. Алгоритми вирізання бувають дво- або тривимірні, їх застосовують для регулярних і нерегулярних областей[30].
Область вирізання є дуже простою але може набувати і складних форм. Це трапляється якщо вилучають сегменти, які частково видимі (рисування з областю вирізання), або якщо намагаються рисувати тоді, коли екран не знає меж обрізання (рисування без області обрізання).
Є багато алгоритмів вирізання. Звичайно, згідно з відповідним випадком, треба вибрати найліпший з алгоритмів. Далі вирізання розглянемо згідно з таким припущеннями. Вікно вирізання завжди повинно мати ортогональні боки, паралельні до осей координат; форма складатиметься з лінійних сегментів; точки і лінії поза вікном зникають (зображена лише та частина, яка є в межах вікна) [37].
4.2.1. Алгоритм серединної точки
Спочатку треба дослідити
кожну точку (x,
y) чи вона є всередині
вікна, чи зовні, а чи є не нижче лівого
нижнього кута з координатами
і не вище правого верхнього
згідно з нерівностями:
4.15. Лінії до вирізання 4.16. Лінії після обрізання
Розглянемо алгоритм серединної точки (поділу серединної точки). Припустимо, що точки і (рис. 4.15) є двома кінцями лінійного сегмента. Кожна точка на площині визначена двома параметрами ΙΧ та ΙΥ так
ΙΧ = -1,0+1, ΙΥ = -1,0+1.
Отже площину поділяємо на дев’ять ділянок.
Задамо відповідності
і
,
тоді можна розглянути такий алгоритм.
Якщо
належать середині вікна, тоді вони
зображені. В іншому випадку продовжуємо
і переходимо до наступного кроку.Якщо
або
є поза вікном, то лінійний сегмент не
зображений, що і буде закінченням
алгоритму. В іншому випадку відбувається
перехід до іншого кроку.Лінійний сегмент
поділяють на дві частини, де координати
серединної точки мають вигляд
.
Для кожної з половинок
і
повторюється алгоритм з першого кроку.
Припинення роботи алгоритму відбувається
після досягнення заданої точності
рисування (рис 4.15, 4.16). Зазначимо, що цей
алгоритм можна легко застосувати до
програмного забезпечення, оскільки тут
наявна єдина операція ділення на два.
4.2.2. Алгоритм Коена-Сазерленда
Розглянемо алгоритм Коена-Сазерленда. У випадку розширення границь заданого вікна ми присвоюємо площині відповідні атрибути:
LEFT :
ліворуч від лінії
;RIGHT: праворуч від лінії
;ΤΟΡ : вище від лінії
;BOTTOM: нижче від лінії
ATTR( ): множина всіх характеристик точки .
На рис. 4.17 зображені точки
з такими атрибутами
Рис. 4.17. Застосування алгоритму Коена - Сазерленда
Сегмент
є повністю видимим, якщо
,
і повністю невидимим, якщо
.
Розглянемо такий алгоритм
Обчислюємо
значення
якщо
то невидимий
вихід
якщо
M:= серединна точка of
обислюємо ATTR(M)
Якщо
R or Τ
ATTR(M)
В іншому випадку якщо L або B ATTR(M)
В іншому випадку якщо , можливо видимі
Повторити алгоритм для ,
В іншому випадку якщо видима, то повторити для
В іншому випадку якщо видимий, то повторити для
Кінець алгоритму
Розглянемо приклад (рис. 4.18.). Обрізати відрізок прямокутним вікном, застосовуючи алгоритм Коена - Сазерленда
Рис. 4.18. Приклад обрізання прямокутним вікном
;
;
можлива
видима частина сегмента лінії;
серединна
точка of
;
;
,
мають можливо видиму частину;
Повторення алгоритму для , .
Лінійний сегмент ;
серединна
точка of
;
;
;
Друк
і повторення для
;
Лінійний сегмент ;
серединна
точка на
;
;
;
Друк
і повторення для
;
Процес повторюється, доки довжина сегмента не досягне визначеної точності.
Обчислимо точки перетину лінійного сегмента з вікном обрізання так.
Лінія, що проходить через
точки
,
і є перетином вертикальними краями, має
вигляд
,
де
– нахил за даної лінії.
Аналогічний перетин горизонтальними краями має вигляд
Застосуємо алгоритм серединної точки, запишемо координати серединної точки, які обчислюють за формулами
.
