- •Київ кнутд 2007
- •1.2 Сфери використання
- •1.3 Головнi поняття I операцiї
- •1.4 Типи графiчних приладiв
- •2 Алгоритми растрової графiки
- •2.1 Растрова I векторна графiка
- •2.1.1 Цифровий диференцiйний аналiзатор
- •2.1.2 Алгоритм Брезенхема побудови вiдрiзкiв
- •2.1.3 Алгоритм Брезенхема креслення кола
- •2.1.4 Алгоритм Брезенхема побудови елiпса
- •2.2 Растрова розгортка багатокутникiв.
- •2.2.1 Алгоритм заповнення з упорядкованими списками ребер
- •2.2.2 Алгоритм заповнення за ребрами
- •2.2.3 Алгоритм заповнення iз списком ребер I прапорцем
- •2.2.4 Простий алгоритм заповнення iз зачiпкою
- •2.2.5 Алгоритм заповнення по рядкам iз зачiпкою
- •2.3 Ефект драбини
- •3. Лабораторнi роботи
- •3.1 Лабораторна робота BresLine на тему "Виведення вiдрiзкiв прямих за алгоритмом Брезенхема"
- •3.2 Лабораторна робота BresCirc на тему "Виведення дуг кола за алгоритмом Брезенхема".
- •3.3 Лабораторна робота BresEllips на тему "Виведення елiпсiв за алгоритмом Брезенхема".
- •3.4 Лабораторна робота FloodLine на тему "Заповнення полiгональних фiгур".
- •3.5 Лабораторна робота FloodCirc на тему "Заповнення довiльних областей".
- •4. Література
- •1 Вступ 5
- •2 Алгоритми растрової графiки 8
- •4. Література 54
3.2 Лабораторна робота BresCirc на тему "Виведення дуг кола за алгоритмом Брезенхема".
Мета.Студент повинен навчитись створювати геометричнi структури з декiлькома графiчними примiтивами для двовимiрних моделей типу замкнених контурiв ("лiтер") у представленнi "ланцюга послiдовних примiтивiв", здiйснювати органiзацiю вхiдного файлу з наявнiстю контурiв, що заданi такими примiтивами, вводити двовимiрнi моделi з заокруглюваннями вершин, здiйснювати виведення контурiв таких "лiтер" за допомогою алгоритмiв Брезенхема виведення як окремих вiдрiзкiв, так i чвертей кола.
Завдання. Створити текстовий вхiдний файл з "лiтер", що утворюються наступними примiтивами "L Xs Ys Xf Yf" (вiдрiзок, з початком у точцi з координатами {Xs, Ys} i кiнцем у точцi з координатами {Xf, Yf}) i "C Xc Yc R n" (n-та чверть кола з центром у точцi з координатами {Xc, Yc}, радiусом R", n=1,2,3,4). Ввести вхiднi данi i накреслити на формi отриманi "лiтери" скориставшись алгоритмами Брезенхема креслення вiдрiзкiв та дуг кола.
Хiд виконання. За одержаними у викладача "лiтерами":
1. Накреслити цi "лiтери" на аркушi паперу у клiтинку таким чином, щоб кожний контур "лiтери" складався з вiдрiзкiв та чвертей кола з цiлочисельними вiдносними координатами (власнi для кожної окремої "лiтери") у системi локальних математичних координат.
2. Розробити структуру вхiдного текстового файлу для введення таких "лiтер". Записати на листi паперу вхiдний файл для отриманих "лiтер" i затвердити його у викладача.
3. Розробити представлення "лiтер", написати програму введення даних з вхiдного файлу i здiйснити виведення контурiв "лiтер" на полотно форми з використанням алгоритму Брезенхема виведення вiдрiзкiв та дуг кола.
4. Оформити звiт з лабораторної роботи i провести її захист.
Питання до лабораторної роботи
1. Алгоритм Брезенхема будування дуги кола у першому квадрантi. Переваги та недолiки методу.
2. Цiлочисельний алгоритм Брезенхема розкладу в растр дуги кола у будь-якому квадрантi. Переваги та недолiки методу.
3.3 Лабораторна робота BresEllips на тему "Виведення елiпсiв за алгоритмом Брезенхема".
Мета. Студент повинен навчитись створювати геометричнi структури з декiлькома графiчними примiтивами для двовимiрних моделей типу замкнених контурiв ("лiтер") у представленнi "ланцюга послiдовних примiтивiв", здiйснювати органiзацiю вхiдного файлу з наявнiстю контурiв, що заданi такими примiтивами, вводити двовимiрнi моделi з елiптичними заокруглюваннями вершин, здiйснювати виведення контурiв таких "лiтер" за допомогою алгоритмiв Брезенхема виведення як окремих вiдрiзкiв, так и дуг елiпсiв.
Завдання. Створити текстовий вхiдний файл з "лiтер", що утворюються наступними примiтивами "L Xs Ys Xf Yf" (вiдрiзок, з початком у точцi з координатами {Xs, Ys} i кiнцем у точцi з координатами {Xf, Yf}) i "E Xc Yc a b n" (n-та чверть елiпса з центром у точцi з координатами {Xc, Yc}, пiвосями a i b, n=1,2,3,4). Ввести вхiднi данi i накреслити на формi отриманi "лiтери" скориставшись алгоритмами типа Брезенхема креслення вiдрiзкiв та дуг елiпса.
Хiд виконання. За одержаними у викладача "лiтерами":
1. Накреслити цi "лiтери" на аркушi паперу у клiтинку таким чином, щоб кожний контур "лiтери" складався з вiдрiзкiв та чвертей елiпсiв з цiлочисельними вiдносними координатами (власно для кожної окремої "лiтери") у системi локальних математичних координат.
2. Розробити структуру вхiдного текстового файлу для введення таких "лiтер". Записати на листi паперу вхiдний файл для отриманих "лiтер" i затвердити його у викладача.
3. Розробити представлення "лiтер", написати програму введення даних з вхiдного файлу i здiйснити виведення контурiв "лiтер" на полотно форми з використанням алгоритму Брезенхема виведення вiдрiзкiв та дуг елiпсiв.
4. Оформити звiт з лабораторної роботи i провести її захист.
Питання до лабораторної роботи
1. Канонiчне рiвняння елiпса. Загальне рiвняння елiпса i зведене рiвняння елiпса з центром i пiвосями, якi паралельнi загальній системi координат.
2. Алгоритм Брезенхема побудови дуги елiпса у першому квадрантi. Переваги та недолiки методу.
3. Цiлочисельний алгоритм Брезенхема розкладу в растр елiпса у будь-якому квадрантi. Переваги та недолiки методу.
Приклад органiзацiї вхiдного файла BresCirc.inp
-1 8
1 L 0 0 0 10
2 L 0 10 5 10
3 C 6 11 1 4
4 L 6 11 6 9
5 C 5 9 1 4
6 L 5 8 2 8
7 L 2 8 2 0
8 L 2 0 0 0
-2 22
1 L 0 2 0 8
2 C 2 8 2 2
3 L 2 10 4 10
4 C 4 8 2 1
5 L 6 8 6 6
6 C 4 6 2 4
7 L 4 4 2 4
8 C 4 4 2 3
9 L 4 2 6 2
10 C 6 0 2 4
11 L 4 0 2 0
12 C 2 2 2 3
13 C 5 7 1 1
14 C 5 7 1 2
15 C 5 7 1 3
16 C 5 7 1 4
17 C 2 11 1 2
18 L 2 12 2 11
19 L 2 11 1 11
20 C 4 11 1 1
21 L 5 11 4 11
22 L 4 11 4 12
15 10 20
Тут записано також двi лiтери. Код лiтери завжди вiд'ємне число (першої -1, другої -2). Далi, при кодi лiтери, вказанi число примiтивiв у контурах (перша лiтера має 8 примiтивiв, друга -- 22). Кожен контур складається або з вiдрiзку "L Xпочатку Yпочатку Xкiнця Yкiнця", або чвертi кола "С Xцентру Yцентру Радiус N", де N - номер чвертi кола при обходi його у сторону, протилежну до стрiлки годинника.
До цiєї iнформацiї також додаються числа x, y, b (див. приклад вхuiдного файла до лаб. Роботи BresLine). Тому у кiнцi файла BresСirс.inp наведено вiдповiдний рядок 15 10 20 тобто, x=15, y=10, b=20
