Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
cg_lab_met_01_06.docx
Скачиваний:
124
Добавлен:
12.02.2016
Размер:
6.29 Mб
Скачать

Лабораторна робота №1

Тема. Побудова графічних примітивів.

Мета: ознайомитись із основними поняттями комп’ютерної графіки, навчитись будувати графічні примітиви.

Вступ

Формування комп’ют ерної графіки (надалі – КГ) як самостійного напрямку інформаційних технологій відноситься до 60-х років ХХ ст., коли Сазерлендом був створений спеціалізований пакет машинної графіки. Вперше подання інформаційних даних на екрані комп’ютера в графічному вигляді було продемонстровано на початку 50-х років спеціалістами Массачусетського технологічного інституту і згодом стало використовуватися в наукових і військових дослідженнях. За цей час комп’ютерна графіка пройшла шлях від окремих експериментів до одного з найважливіших інструментів сучасності. Розвиток комп’ютерної графіки проходить жваво: дещо швидко відживає, а водночас з’являється багато нового. Нині не можна собі уявити розвиток будь-якої галузі людської діяльності, пов’язаної з наукою, чи технікою без використання КГ. Вона є багатофункціональною складовою усіх інформаційних технологій і важливою компонентою для взаємодії людини з комп’ютером. На першому етапі свого розвитку КГ була пасивною, однак це вже забезпечувало наочну форму сприйняття інформації, а, як відомо, більшу частину інформації (до 75%) про навколишній світ людина сприймає візуально, тобто за допомогою органів зору. З цього приводу можна згадати прислів’я: „краще раз побачити, ніж сто разів почути”, або його китайський аналог „одна картинка коштує 1000 слів”. Зображення не тільки місткий, але і доступний вид інформації, оскільки для сприйняття візуальної інформації від користувача вимагається менше зусиль. Інформація, що міститься у зображеннях, є найбільш концентрованою, найлегше сприймається та найшвидше обробляється.

При пасивній графіці ЕОМ формує і виводить зображення на графічний пристрій під управлінням прикладних програм. Користувач не може безпосередньо керувати формуванням зображення, перш ніж воно не з'явиться на екрані. Пасивний контроль не дає можливості втрутитися в процес проектування конструкції (система працює в пакетному режимі без діалогу). Для модифікації вихідного зображення необхідний повторний запуск пакета прикладних програм. Тому виникла необхідність у розвитку діалогових систем КГ, тобто систем інтерактивної графіки, щоб користувач оперативно міг вносити зміни в зображення безпосередньо в процесі його відтворення (в реальному масштабі часу). Нині всі сучасні графічні програми є системами інтерактивної КГ і вони можуть відтворювати всі особливості реальних зображень.

Графіка – вид мистецтва, що включає малюнок і художнє зображення (походить від грецьк. слова графо, що означає „пишу, креслю, малюю”).

Комп’ютерна графіка – це галузь знань, що вивчає та розробляє методи і засоби синтезу, збереження й перетворення цифрових зображень за допомогою ЕОМ та інших технічних пристроїв.

Найважливіша функція комп'ютера – обробка інформації. Особливо можна виділити обробку інформації, пов'язану із зображеннями. Вона поділяється на три основні напрямки: візуалізація, обробка і розпізнавання зображень.

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

Обробка зображень – це перетворення зображень, тобто вхідними даними є зображення і результат – теж зображення. Прикладами обробки зображень можуть служити підвищення контрасту, чіткості, корекція кольорів, редукція кольорів, згладжування, зменшення шумів і т.д. В якості матеріалу обробки можуть бути космічні знімки, скановані зображення, радіолокаційні, інфрачервоні зображення і т.п. Завданням обробки зображень може бути як поліпшення в залежності від певного критерію (реставрація, відновлення), так і спеціальне перетворення, кардинально змінює зображення. В останньому випадку обробка зображень може бути проміжним етапом для подальшого розпізнавання зображення.

Наприклад, перед розпізнаванням часто необхідно виділяти контури, створювати бінарне зображення, розділяти вихідне зображення за кольорами. Методи обробки зображення можуть істотно відрізняються в залежності від того, яким шляхом воно отримане: синтезовано системою КГ, отримано в результаті оцифровки чорно-білої або кольорової фотографії. Основним завданням розпізнавання зображень є отримання опису зображених об'єктів. Методи та алгоритми розпізнавання розроблялися, перш за все, для забезпечення зору роботів і для систем спеціального призначення. Але останнім часом комп'ютерні системи розпізнавання зображень все частіше з'являються в повсякденній практиці, наприклад, офісні системи розпізнавання текстів чи програми векторизації .

Види графіки

Незважаючи на те, що для роботи з КГ існує безліч класів програмного забезпечення, виділяють всього три види КГ: растрову, векторну і фрактальну графіку. Вони розрізняються принципами формування зображення при відображенні на екрані монітора або при друці на папері. Растрова графіка застосовується при розробці електронних і поліграфічних видань. Ілюстрації, виконані засобами растрової графіки, рідко створюють вручну за допомогою комп'ютерних програм. Частіше для цієї мети сканують ілюстрації, підготовлені художником на папері, або фотографії. Останнім часом для введення растрових зображень в комп'ютер знайшли широке застосування цифрові фото- і відеокамери. Відповідно, більшість графічних редакторів, призначених для роботи з растровими ілюстраціями, орієнтовані не стільки на створення зображення, скільки на їх обробку . В Інтернеті, в основному, застосовуються растрові ілюстрації.

Програмні засоби для роботи з векторною графікою навпаки призначені, в першу чергу, для створення ілюстрацій і в меншій мірі для їх обробки. Такі засоби широко використовують в рекламних агентствах, дизайнерських бюро, редакціях і видавництвах. Роботи, засновані на застосуванні шрифтів і найпростіших геометричних елементів, вирішуються засобами векторної графіки набагато простіше. Існують приклади високохудожніх творів, створених засобами векторної графіки, але вони скоріше виключення, ніж правило, оскільки художня підготовка ілюстрацій засобами векторної графіки надзвичайно складна.

Програмні засоби для роботи з фрактальною графікою призначені для автоматичної генерації зображень шляхом математичних розрахунків. Створення фрактальної художньої композиції полягає не в малюванні або оформленні, а в програмуванні. Фрактальну графіком рідко застосовують для створення друкованих або електронних документів, але її часто використовують у розважальних програмах.

Растрова графіка. Основним елементом растрового зображення є точка. Якщо зображення екранне, то ця точка називається пікселем. Залежно від того, яка роздільна здатність екрана та яка налаштована операційна система комп'ютера, на екрані можуть розміщуватись зображення, що мають 640х480, 800х600, 1024х768 і більше пікселів.

З розміром зображення безпосередньо пов'язана його роздільна здатність. Цей параметр вимірюється в кількості точок на дюйм (dots per inch – dpi ). У монітора з діагоналлю 15 дюймів розмір зображення на екрані складає приблизно 28х21 см. Знаючи, що в 1 дюймі 25,4 мм, можна розрахувати, що при роботі монітора в режимі 800х600 пікселів роздільна здатність екранного зображення дорівнює 72 dpi.

При друку роздільна здатність має бути набагато вищою. Поліграфічний друк повноколірного зображення вимагає 200-300 dpi. Стандартний фотознімок розміром 10х15 см повинен містити приблизно 1000х1500 пікселів. Неважко також встановити, що всього таке зображення буде мати 1,5 млн точок, а якщо воно кольорове і на кодування кожної точки використані три байти, то звичайній кольоровій фотографії відповідає масив даних розміром понад 4 Мбайт.

Внаслідок того, що растрове зображення складається з великої кількості окремих точок, растрова графіка має два істотні недоліки, які слід враховувати при виборі програмного засобу.

Перший недолік – великі об'єми даних при роботі з растровими зображеннями. Для активних робіт з ілюстраціями великого розміру (типу журнальної смуги) потрібні комп'ютери з винятково великими обсягами оперативної пам'яті і високопродуктивними процесорами.

Другий недолік растрової графіки – ефект пікселізації – пов'язаний з неможливістю збільшення зображення для розгляду деталей. Оскільки зображення складається з точок, то збільшення призводить до того, що точки стають більшими. Ніяких додаткових деталей при збільшенні растрового зображення розглянути не вдається, а збільшення точок растру візуально спотворює ілюстрацію і робить її грубою.

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

Зрозуміло, в растровій графіці теж існують лінії, але там вони розглядаються як комбінації точок. Для кожної точки лінії в растровій графіці відводиться одна або кілька комірок пам'яті (чим більше кольорів можуть мати точки, тим більше клітинок їм виділяється ). Відповідно, чим довша растрова лінія, тим більше пам'яті вона займає. У векторній графіці об'єм пам'яті, що займає лінія, не залежить від розмірів лінії, оскільки вона представляється у вигляді формули, а точніше кажучи, у вигляді декількох параметрів. Що б ми не робили з цією лінією, змінюються тільки її параметри, що зберігаються в комірках пам'яті. Кількість же комірок залишається незмінним для будь-якої лінії.

Лінія – це елементарний об'єкт векторної графіки. Все, що є у векторній ілюстрації, складається з ліній. Найпростіші об'єкти об'єднуються в більш складні (наприклад, об'єкт чотирикутник можна розглядати як чотири пов'язані лінії, а об'єкт куб ще більш складний: його можна розглядати або як 12 пов'язаних ліній, або як 6 пов'язаних чотирикутників ). Через такий підхід векторну графіку часто називають об'єктно-орієнтованою графікою.

Зауважимо, що об'єкти векторної графіки зберігаються в пам'яті у вигляді набору параметрів, але на екран всі зображення однаково виводяться у вигляді точок (просто тому, що екран так влаштований). Перед виведенням на екран кожного об'єкта програма робить обчислення координат екранних точок у зображенні об'єкта. Аналогічні обчислення проводяться і при виведенні об'єктів на принтер.

Фрактальна графіка. Фрактальна графіка, як і векторна – використовує обчислення, але відрізняється від неї тим, що ніякі об'єкти в пам'яті комп'ютера не зберігається. Зображення будується за рівнянням (або по системі рівнянь), тому нічого, крім формули, зберігати не треба. Змінивши коефіцієнти в рівнянні, можна отримати зовсім іншу картину.

Застосування КГ

Сфери застосування комп'ютерної графіки:

● САПР (системи автоматизованого проектування);

● ділова графіка (графічне представлення даних);

● візуалізація процесів і явищ у наукових дослідженнях (комп'ютерне графічне моделювання);

● медицина (комп'ютерна томографія, УЗД і т.д.);

● геодезія і картографія (ГІС);

● поліграфія (схеми, плакати, ілюстрації);

● сфера масової інформації (графіка в Інтернеті, ілюстрації, фото);

● кінематографія (спецефекти, комп'ютерна мультиплікація);

● побут (комп'ютерні ігри, графічні редактори, фотоальбоми).

Настільки широке поширення комп'ютерна графіка отримала з появою інтерактивних графічних систем .

Поняття "інтерактивна комп'ютерна графіка" (ІКГ) передбачає здатність комп'ютерної системи створювати графіку і вести діалог з людиною. В системі ІКГ користувач сприймає на дисплеї зображення, що представляє деякий складний об'єкт, і може вносити зміни до опису (модель) об'єкта. Такими змінами можуть бути введення і редагування окремих елементів, завдання числових значень для будь-яких параметрів, різні операції по введенню інформації на основі сприйняття зображень людиною. В даний час майже будь-яку програму можна вважати системою інтерактивної комп'ютерної графіки.

Історично першими інтерактивними системами вважаються системи автоматизованого проектування (САПР), які з'явилися в 60- х роках XX століття. Вони використовуються в багатьох областях: машинобудування, електроніка, проектування літаків та автомобілів, при розробці мікроелектронних інтегральних схем, у архітектурі.

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

Графічні примітиви

Графічний об’єкт – це певний малюнок, одержаний за допомогою комп’ютера. Сукупність графічних об’єктів називають зображенням. Графічні зображення часто мають ієрархічну структуру, яка виникає в результаті процесу побудови знизу-вверх. Простіші базові графічні елементи, з яких будуються графічні об’єкти довільної складності, називаються графічними примітивами. Вони використовуються як будівельні блоки для об’єктів більш високого рівня. Графічні примітиви розглядаються як прості неподільні елементи зображення і генеруються однією окремою командою (підпрограмою). Вони можуть мати також апаратний та апаратно-програмний рівень формування. Як правило, множина примітивів містить такі елементи

  • точку,

  • відрізок (довжина відрізка з кінцямиобчислюється за формулою. Координати точки середини відрізка обчислюються з використанням рівнянь: ),

  • ламану лінію (замкнену і незамкнену),

  • трикутник,

  • трикутний стріп (рис. 1.1, а),

  • трикутний фен (рис. 1.1, б),

  • чотирикутник,

  • чотирикутний стріп (рис. 1.1, в),

  • опуклий многокутник (полігон),

  • коло (рівняння кола з центром в точці та радіусом обчислюється за формулою ).

Параметри примітивів характеризують форму, розміри, місце розташування примітива. Атрибути примітивів – це властивості, які визначають їх вигляд при візуалізації, тобто спосіб зображення заданого примітиву. Для кожного типу об’єктів визначають свій набір атрибутів: • для точки – розмір та колір; • для лінії – колір, товщина і тип (лінія, яка використовується для малювання відрізків може бути суцільною або штриховою); • для многокутників – режим контуру чи заповнення. Цей параметр вказує спосіб задання многокутників. Можна малювати тільки вершини або ребра, а можна зображати зафарбовані многокутники, при цьому контур може малюватись одним кольором, а внутрішня область заливатись іншим.

Графічні бібліотеки

Більшість мов програмування мають свої стандартні графічні бібліотеки. Наприклад, у мові с++ стандартним модулем є graphics.h, для ініціалізації якого потрібно підключити, так званий, заголовки (# include <graphics.h>). У цьому файлі описані всі функції, які потрібні для написання програми працює з "графікою". Основними функціями є:

initgraph (& grdriver, & grmode, "path"); - функція ініціалізації графічного режиму, де &grdriver, &grmode, "path" - параметри завантажуваного режиму;

grdriver і grmode - змінні типу integer;

"Path" - шлях до драйверу графічного режиму, що завантажується.

Функція закриття графічного режиму: closegraph (); - дана функція без яких або параметрів і закриває поточний графічний режим.

Функція визначення графічного драйвера і відео режиму: detectgraph (&grdriver, &grmode);

arc (int x, int y, int stangle, int endangle, int radius); - Функція малює дугу, за заданими координатами x, y, початковим і кінцевим кутом stangle, endangle і заданим радіусом radius.

bar (int left, int top, int right, int bottom); - Функція малює прямокутник починаючи від лівого верхнього кута з координатами left, top до правого нижнього кута з координатами right, bottom.

circle (int x, int y, int radius); - Функція малює коло з центром в точці з координатами (x, y) і радіусом radius.

drawpoly (int numpoints, int * polypoints); - Функція малює полігон з кількістю вершин numpoints і координатами вершин *polypoints. *polypoints є одновимірним масивом.

ellipse (int x, int y, int stangle, int endangle, int xradius, int yradius); - Функція малює еліпс з координатами в точці (x, y), початковим і кінцевим кутами stangle, endangle, і радіусами xradius, yradius по осях x і y.

fillpoly (int numpoints, int *polypoints); - Функція малює і зафарбовує заданим кольором полігон.

fillelipse (int x, int y, int xradius, int yradius); - Функція малює зафарбований еліпс.

floodfill (int x, int y, int border); - Область, обмежена кольоровою межею зафарбованою встановленим зразком і кольором.

lineto (int x, int y); - Малює лінію від поточної позиції до точки з координатами (x, y), потім переносить поточну позицію в (x, y).

putpixel (int x, int y, int color); - Малює точку з координатами (x, y) і кольором color.

rectangle (int left, int top, int right, int bottom); - Малює прямокутник від точки з координатами (left, top) до точки з координатами (right, bottom).

У с# для роботи з графічними примітивами використовують клас System.Drawing.Graphics, основними структурами якого є: single – це число одиночної точності з плаваючою крапкою, point – визначає впорядковану пару цілих чисел – координат x і y, оприділяє точку на двовимірній площині, pen – визначає об'єкт, який використовується для малювання прямих ліній і кривих, rectangle – визначає прямокутник з заданими розмірами та розміщенням.

Основними функціями, що дозволяють малювати примітиви є:

DrawArc (Pen, Rectangle, Single, Single). - Малює дугу, яка є частиною еліпса, заданого структурою Rectangle.

DrawBezier (Pen, Point, Point, Point, Point). - Малює криву Безьє, яка визначається чотирма структурами Point.

DrawClosedCurve (Pen, Point []). - Будує замкнуту фундаментальну криву, яка визначається масивом структур Point.

DrawCurve (Pen, Point []). - Будує фундаментальну криву через точки зазначеного масиву структур Point.

DrawEllipse (Pen, Rectangle). - Малює еліпс, який визначається обмежує структурою Rectangle.

DrawPie (Pen, Rectangle, Single, Single). - Малює сектор, який визначається еліпсом, заданих структурою Rectangle і двома радіальними лініями.

DrawPolygon (Pen, Point []). - Малює багатокутник, який визначається масивом структур Point.

DrawRectangle (Pen, Rectangle). - Малює прямокутник, який визначається структурою Rectangle.

Завдання

  1. Відобразити координатну площину з осями, підписами та напрямними стрілками (центр осей в центрі Canvas). Забезпечити побудову квадратів за заданими координатами двох вершин (верхньої та нижньої лівої) із автоматичною побудовою вписаних кіл. Забезпечити можливість вибору заливки квадратів та кіл.

  2. Відобразити координатну площину з осями, підписами та напрямними стрілками (центр осей в центрі Canvas). Забезпечити побудову функції у=sin(x)+2x+1 лише для x≥0 на заданому відрізку з можливістю вибору кольору та типу лінії графіка.

  3. Відобразити координатну сітку (горизонтальну та вертикальну) з осями, підписами та напрямними стрілками (центр осей в центрі Canvas). Забезпечити ввід декількох трикутників із заданими вручну координатами вершин та можливістю вибрати колір заливки та ліній, а також вигляд вершин трикутника.

  4. Відобразити координатну сітку(горизонтальну та вертикальну) з осями, підписами та напрямними стрілками (центр осей в центрі Canvas). Забезпечити побудову графіка функції sin(x) на заданому відрізку з можливістю вибору кольору ліній та типу ліній, легенди графіка.

  5. Відобразити координатну площину з осями, підписами та напрямними стрілками (центр осей в точці (10,10) на Canvas). Забезпечити побудову чотирикутників за заданими координатами вершин (заливка – будь-який випадковий колір) лише у другій координатній чверті із автоматичною побудовою діагоналей.

  6. Відобразити координатну площину з осями, підписами та напрямними стрілками (центр осей в центрі Canvas). Забезпечити побудову графіка функції ax2+bx+c на заданому відрізку відповідно до введених коефіцієнтів з можливістю вибору кольору ліній та відобразити мінімум (або максимум в залежності від коефіцієнтів) функції.

  7. Відобразити координатну сітку (горизонтальну та вертикальну) з осями, підписами та напрямними стрілками (центр осей в центрі Canvas). Забезпечити побудову квадратів за заданими координатами двох вершин(верхньої та нижньої правої) із автоматичною побудовою описаних кіл навколо квадратів. Забезпечити можливість вибору кольору межі квадратів та кіл.

  8. Відобразити координатну площину з осями, підписами та напрямними стрілками (центр осей в правому верхньому куті Canvas). Забезпечити побудову кіл за заданим центром та радіусом (можливість задання заливки) лише у третій координатній чверті із автоматичною побудовою радіуса та центру кіл).

  9. Відобразити координатну площину з осями, підписами та напрямними стрілками (центр осей в центрі Canvas). Забезпечити побудову трапецій за заданими координатами вершин (заливка – вибраний користувачем колір) із автоматичною побудовою медіан, що виходять із кожного кута трапеції.

  10. Відобразити координатну сітку (горизонтальну та вертикальну) з осями, підписами та напрямними стрілками (центр осей в центрі Canvas). Забезпечити побудову квадратів за заданими координатами двох вершин(верхніх лівої та правої) із автоматичною побудовою внутрішніх квадратів, що мають вершини у центрі кожної із сторін заданого квадрата. Заливка обох квадратів – різна (визначена випадковим чином).

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

  12. Відобразити координатну сітку(горизонтальну та вертикальну) з осями, підписами та напрямними стрілками (центр осей в центрі Canvas). Забезпечити побудову графіків функції sin(x) та cos(x) на заданому відрізку з можливістю вибору типу ліній та відображенням точок перетину даних графіків.

  13. Відобразити координатну площину з осями, підписами та напрямними стрілками (центр осей в нижньому правому куті Canvas). Забезпечити побудову прямокутників за заданими координатами лівої верхньої та правої нижньої вершин лише у другій координатній чверті.. Побудувати одну діагональ прямокутника та розфарбувати два утворених трикутники в різні кольори.

  14. Відобразити координатну сітку (горизонтальну та вертикальну) з осями, підписами та напрямними стрілками (центр осей в центрі Canvas). Забезпечити побудову квадратів за заданими координатами двох вершин(верхньої лівої та нижньої правої) із автоматичною штриховкою середини квадратів горизонтальними та вертикальними лініями (відстань між якими 0,5 одиничного відрізка). Забезпечити можливість вибору кольору країв квадратів.

  15. Відобразити координатну сітку (горизонтальну та вертикальну) з осями (колір задається користувачем), підписами та напрямними стрілками (центр осей в центрі Canvas). Забезпечити побудову графіка функції у=cos(2x)+0.5 лише для у≥0 на заданому користувачем відрізку. Забезпечити можливість вибору кольору графіка.

Вимоги до звіту:

  1. Тутильний аркуш.

  2. Тема звіту.

  3. Мета звіту.

  4. Теоретичні відомості.

      1. Описати функції, які використовували під час виконання лабораторної роботи.

  5. Текст програми з коментарями.

  6. Вигляд реалізованої програми.

  7. Висновки.

Вимоги до програми:

Програма має передбачати наступні можливості:

  1. Ввід вхідних даних вручну в залежності від варіанту.

  2. Передбачити можливість некоректного введення даних.

  3. Передбачити розрахунок розмірів об’єкту у відповідності до розмірів Canvas, щоб межі кривої не вийшли за межі Canvas.

Контрольні запитання.

  1. Що таке графіка?

  2. Що таке КГ?

  3. Що таке інтерактивна графіка?

  4. Які сфери застосування комп’ютерної графіки?

  5. Які типи графіки існують?

  6. Які недоліки растрової графіки?

  7. Що таке растр?

  8. Що таке роздільна здатність?

  9. Що таке графічний об’єкт?

  10. Що таке графічний примітив?

  11. Наведіть приклади графічних примітивів.

  12. Що таке атрибути графічних примітивів?

Тема.Створення ілюстративних зображень (на прикладі використання CorelDraw).

Мета.Вивчити засоби редактора CorelDraw для побудови ілюстративної графіки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]