МІНІСТЕРСТВО НАУКИ І ОСВІТИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ „ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Інститут комп’ютерних наук та інформаційних технологій
Кафедра систем автоматизованого проектування
Курсова робота
з дисципліни „Системне програмування та операційні системи”
на тему:
„Розробка та реалiзацiя на Асемблері програми виводу
на екран BMP-файлу з масштабуванням”.
Допущено до захисту: Виконав:
Дата: студент групи КН – 24
Прийняв:
Оцінка:
Дата:
Львів 2010
Національний університет „Львівська політехніка”
Кафедра ”Системи автоматизованого проектування ”
Дисципліна Системне програмування і операційні системи
Спеціальність Комп’ютерні науки
Курс 2 Група КН-24 Семестр 4 .
Завдання
на курсовий проект (роботу) студента
Збишко Ігора Степановича
/прізвище, ім’я, по - батькові/
1. Тема проекту /роботи/ Розробка та реалізація на Асемблері програми виводу на екран ВМР-файлу з масштабуванням.
2. Термін здачі студентом закінченого проекту /роботи/
3. Вихідні дані для проекту /роботи/
Програма для перегляду зображення у графічному форматі BMP з можливістю збільшення або зменшення його у два рази
4. Зміст розрахунково-пояснювальної записки /перелік питань, які підлягають розробці/
Вступна частина
Аналіз складання алгоритму
Реалізація програми
Висновки
5. Перелік графічного матеріалу / з точним зазначенням обов’язкових креслень/
Блок схема алгоритму
6. Дата видачі завдання .
КАЛЕНДАРНИЙ ПЛАН
№ п/п
Назва етапів курсового проекту ( роботи )
Термін виконання етапів проекту ( роботи )
Примітки
1
Вибір та отримання завдання
12.02. – 24.02.
2
Складання плану роботи над завданням
24.02 – 26.02
3
Пошук літератури для роботи над завданням
27.02 – 5.03
Знайдено 52ст. по темі курсового проекту
4
Опрацювання літератури
5.03 – 8.03
5
Консультація у керівника курсового проекту
9.03
Отримання деякої додаткової літератури
6
Повторне опрацювання усієї зібраної літератури та вибір найбільш корисної її частини
15.03 – 18.03
7
Вияснення найважливіших питань, що виникли в результаті опрацювання літератури
19.03 – 22.03
8
Консультація у керівника курсового проекту
23.03
9
Написання деяких фрагментів програми на мові високого чи середнього рівня для реалізації поставленої задачі курсового проекту
24.03 – 1.04
10
Написання повної програми на мові високого чи середнього рівня для реалізації задачі курсового проекту
1.04 – 6.04
11
Консультація у керівника курсового проекту
6.04
12
Написання фрагментів програми на мові низького рівня Асемблер для реалізації задачі курсового проекту
7.04 – 20.04
13
Консультація у керівника курсового проекту
20.04
14
Об’єднання фрагментів та написання повної програми для реалізації задачі курсового проекту
21.04 – 4.05
15
Консультація у керівника курсового проекту
4.05
16
Оформлення курсового проекту
8.05
....................................
Студент
Збишко Ігор Степанович
( підпис )
( прізвище, ім’я, по-батькові )
Керівник
Фармага Ігор Вірославович
( підпис )
( прізвище, ім’я, по-батькові )
____________________2008 р.
Технічне завдання
Розробка та реалiзацiя на Асемблері програми виводу на екран BMP-файлу з масштабуванням.
Анотація
Мандрик О. М. “ Розробка та реалiзацiя на Асемблері програми виводу на екран BMP-файлу з масштабуванням”.
Курсова робота. – НУ “Львівська політехніка”, каф.: САПР, дисципліна: “Системне програмування та операційні проблеми”, 2007.
Курсова робота складається з 61 сторінок, блок-схеми.
В даній курсовій роботі розроблено програму виводу на екран BMP-файлу з масштабуванням (збільшення і зменшення у два рази). Дана робота описує основні теоретичні відомості про мову програмування Асемблер, а також інформацію про комп’ютерну графіку. У роботі представлено текст програми на мові Асемблер, та аналіз результатів виконання програми на мові Асемблер.
Зміст
Технічне завдання
Анотація.
5
Вступ
7
1.
Основні теоретичні відомості про мову програмування Асемблер
10
2.
Загальні відомості про графіку.
15
3.
Формати графічних файлів.
19
4.
Системи кольорів.
23
5.
Основні поняття трьохвимірної графіки.
25
6.
Використання функцій BIOS для роботи з відеоадаптерами.
28
7.
Класифікація зображень і перетворень.
34
8.
Текст програми на мові Асемблер
38
9.
Блок-схема програми
52
Висновок
53
Список використаної літератури
60
61
Вступ
Процес роботи комп’ютера полягає у виконанні програм, тобто деякого набору команд, що надходять у визначеному порядку. Програма - це опис алгоритмів мовою програмування. Під мовою програмування розуміють правила подання даних і запису алгоритмів їх обробки, що автоматично виконуються електронними обчислювальними машинами. Ідея керування обчислювальним процесом за допомогою програми належить Аді Лавлейс, дочці відомого англійського поета Дж.Байрона.
Розвиток обчислювальної техніки супроводжується створенням нових і вдосконаленням існуючих мов програмування — засобів спілкування програмістів з ЕОМ. У більш абстрактному вигляді мова програмування є засобом створення програмних моделей об’єктів і явищ зовнішнього світу. На сьогодні вже створено десятки різних мов програмування. Виділяють п’ять поколінь в розвитку мов програмування.
Основними рушійними силами еволюції мов програмування є:
прагнення розробників до створення більш досконалих програм;
прагнення до підвищення ефективності процесу виробництва програмної продукції;
збільшення різноманітності і підвищення складності задач, які розв’язуються за допомогою ЕОМ;
вдосконалення самих ЕОМ призводить до необхідності створення мов, що максимально реалізують нові можливості ЕОМ;
забезпечення тривалого життєвого циклу програми.
Прагнення програмістів оперувати не цифрами, а символами, призвело до створення мнемонічної мови програмування, що називають асемблером, мнемокодом, автокодом. Ця мова має певний синтаксис запису програм, в якому зокрема цифровий код операції замінений мнемонічним кодом. Тепер мова асемблера використовується для створення системних програм, що використовують специфічні апаратні можливості цього класу ЕОМ.
Наступний етап характеризується створенням мов високого рівня. Ці мови є універсальними (дають змогу створювати будь-які прикладні програми) й алгоритмічно повними, мають більш широкий спектр типів даних і операцій, підтримують технології програмування. Цими мовами створюється безліч різноманітних прикладних програм. Принциповими відмінностями мов високого рівня від мов низького рівня є:
використання змінних;
можливість запису складних виразів;
можливість розширення набору типів даних за рахунок конструювання нових типів з базових;
можливість розширення набору операцій за рахунок підключення бібліотек підпрограм;
низька залежність від типу ЕОМ.
Комп'ютерна графіка в даний час сформувалася як наука про апаратне і програмне забезпечення для різноманітних зображень від простих креслень до реалістичних образів природних об'єктів. Комп'ютерна графіка використовується майже у всіх наукових і інженерних дисциплінах для наочності і сприйняття, передачі інформації. Застосовується в медицині, рекламному бізнесі, індустрії розваг і т.д. Кінцевим продуктом комп'ютерної графіки є зображення. Це зображення може використовуватися в різних сферах, наприклад, воно може бути технічним кресленням, ілюстрацією із зображенням деталі в керівництві по експлуатації, простою діаграмою, архітектурним видом передбачуваної конструкції або проектним завданням, рекламною ілюстрацією або кадром з мультфільму.
У комп'ютерній графіці розглядаються наступні завдання:
Представлення зображення в комп'ютерній графіці;
Підготовка зображення до візуалізації;
Створення зображення;
Здійснення дій із зображенням.
Під комп'ютерною графікою звичайно розуміють автоматизацію процесів підготовки, перетворення, зберігання і відтворення графічної інформації за допомогою ЕОМ.
Під графічною інформацією розуміються моделі об'єктів і їх зображення.
Інтерактивна комп'ютерна графіка - це так само використання ЕОМ для підготовки і відтворення зображень, але при цьому користувач має можливість оперативно вносити зміни в зображення безпосередньо в процесі його відтворення, тобто передбачається можливість роботи з графікою в режимі діалогу в реальному масштабі часу.
Достоїнства графіки:
Найбільш природні засоби спілкування з ЕОМ;
Добре розвинений двомірний і тривимірний механізм розпізнавання образів дозволяє дуже швидко і ефективно сприймати і обробляти різні види даних.
Вона дозволяє значно розширити смугу пропускання при спілкуванні людини з ЕОМ за рахунок використання розумного поєднання тексту, статичних і динамічних зображень в порівнянні з випадками, коли можна працювати тільки з текстами. Це розширення істотно впливає на можливість розуміти дані, виявляти тенденції і візуалізувати існуючі або уявні об'єкти при обробці.
При обробці інформації, пов'язаної із зображенням, виділяють три основні напрями:
1. Розпізнавання образів;
2. Обробка зображень;
3. Машинна і комп'ютерна графіка.
Основне завдання розпізнавання образів полягає в розпізнаванні наявного зображення на формально зрозумілому на мові символів. Розпізнавання образів є сукупність методів, що дозволяють одержувати зображення подані на вхід, або віднесення деяких зображень до деякого класу.
Основні напрями комп'ютерної графіки: Ілюстративне - це напрям можна розуміти, розширений, починаючи з представлення результатів експерименту, і кінчаючи створенням рекламних роликів;
Виведення зображення на екран комп'ютера є невід'ємним, але всього лише першим кроком на шляху становлення машинної графіки.
1. Основні теоретичні відомості про мову програмування Асемблер
Асемблер є мовою програмування низького рівня. Він забезпечує написання, відладку та виконання програм на рівні близькому до машинних команд. Основна область застосування Асемблера - написання високоефективних програм системного характеру (драйверів, динамічна відеографіка, обробка сигналів в режимі реального часу, тощо).
Програмування на Асемблері базується на системі програмування, яка забезпечує перехід від початкового файлу з текстом програми до завантажувального файлу, готового до виконання (інтерпретації мікропроцесором).
Реалізація програми на Асемблері охоплює такі етапи:
- написання програми на мові Асемблера, ввід та оформлення її у вигляді початкового файлу за допомогою текстового редактора (наприклад, Nогtоn Соmmander);
- трансляція початкового файлу в об'єктний файл;
- редагування зв'язків на основі декількох об'єктних файлів і формування завантажувального файлу для інтерпретації мікропроцесором.
Така схема забезпечує незалежне асемблювання кількох початкових файлів з подальшим їх об'єднанням на рівні об'єктних файлів в один завантажувальний. Вказаний підхід реалізує концепції модульного програмування (розробка та реалізація програм по частинах - модулях). Відповідно розглядають початковий модуль, об'єктний модуль та завантажувальний модуль. Відомі і простіші схеми асемблювання, які забезпечують, перехід, від рівня початкових файлів до завантажуваних.
Програма. на Асемблері складається з модулів. Модулі складаються з сегментів. Сегменти складаються з процедур, команд та директив.
Початковий програмний модуль складається з операторів. Виділяються оператори трьох типів: команди, директиви, коментар. Оператори команд визначають операції, які виконує процесор. Директиви вказують Асемблеру та Редактору зв'язків як оформляти (об'єднувати) команди та модулі в програму. Директиви також забезпечують розподіл пам'яті та визначення даних.
Оператори команд складаються з символічного імені, коду операції, поля операндів та коментарів. Код операції визначає команду і відрізняє її від директиви. При написанні програми на Асемблері символічне ім’я ставиться перед кодом операції через двокрапку і називається міткою (внутрішньою). Мітка визначає адресу команди в оперативній пам'яті, що може використовуватись, наприклад, операторами переходу.
Операнди (два, один, або відсутні) визначають дані над якими виконуються операції процесором. Операнди відділяються один від одного комою, а від коду команди - пропуском.
Коментар відділяється від полів команди та операндів пропуском та крапкою з комою. Він не приймає участі в асемблюванні і служить лише для документування програми.
Оператори директив складаються з символічного імені, коду псевдооперації, поля операндів та коментарів. Структура директиви аналогічна структурі команди. Код псевдооперації визначає зміст директиви.
Операндів директиви може бути декілька і вони розділяються комами, а від коду псевдооперації відділяються пропуском.
Символічне ім'я, яке стоїть на початку директиви розподілу пам'яті (директиви визначення) називається змінною. Символічне ім'я директиви відділяється від коду пропуском, а не двокрапкою, як мітка.
Коментар записується через пропуск та крапку з комою.
Програма складається з модулів, які можуть бути паралельно розроблені та реалізовані. Кожний модуль складається з операторів, які обробляються (транслюються) Асемблером. Для транслятора признаком кінця операторів модуля є директива - ЕND (Кінець). Крім того операнд директиви END визначає точку входу програми.
Кожний модуль поділяється на окремі частини директивами сегментації, які визначають початок (SEGMENT) та кінець (ENDS) сегмента. Кожен із сегментів (типів сегментів) має певні функції і забезпечує структуризацію програм. Всі сегменти поіменовані (SSEG - стековий сегмент, CSEG - програмний сегмент, DSEG - сегмент даних, ESEG - додатковий сегмент даних). Директива ASSUME зв'язує довільні імена з сегментами відповідного типу. Типи сегментів визначають функції, що вони виконують (SS, ES та-DS - визначення даних, CS - послідовність команд, а також, директив, що групують ці команди у блоки).
Програмний сегмент поділяється на частини директивами визначення процедур (по іменованих). Процедури близькі до підпрограм, але вони знаходяться, у складі початкового модуля. Основні складові програми вказані на прикладі
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,ES:ESEG,SS:SSEG
START PROC FAR
PUSH DS
PAD: MOV BX,DSEG
CALL MAIN
MOV AX, 4C00H
INT 21H
START ENDP
MAIN PROC NEAR
MOV AM, CATS
. . . RET
MAIN ENDP
CSEG ENDS
END START
Виділяють два основних типи операндів: регістровий та операнд в оперативній пам'яті. Команда може мати 0,1,2 операнди. Якщо операнд один, то він або регістровий, або в оперативній пам'яті. Якщо їх два, то один регістровий, а інший в оперативній пам'яті. Операнд в регістрі визначається ім'ям цього регістра. Операнд в оперативній пам'яті визначається вмістом регістрів, поіменованих символічними іменами, областями оперативної пам'яті та константами - це визначає спосіб адресації.
Безпосередня адресація:
MOV DX,3451H ; (3451H - абсолютна адреса)
MOV DX,OFFSET CATS ; адреса, змінної CATS відносно початку сегмента)
Індексна адресація:
MOV DX,[SI] ; (посередня адресація)
Відносна адресація:
MOV DX,[BX] ; (посередня адресація)
Адресація з індексацією та базуванням:
MOV [DX+SI] ; (посередня адресація)
Пряма адресація:
MOV DX,CATS
Пряма адресація з індексацією:
MOV DX,CATS[SI]
Пряма адресація з базуванням:
MOV DX,CATS[BX]
Пряма адресація з індексацією та базуванням:
MOV DX,CATS[BX+SI]
Якщо операнд заданий константою (безпосередня адресація), то він обробляється, як дані (при трансляції підставляється адреса цієї константи). Якщо в операнді вказане ім'я, то це - різновидність прямої адресації. Якщо в операнді імені немає, а є регістри (індексний чи базовий) в квадратних дужках, то це - посередня, адресація, бо адреса визначається через вміст регістрів. Коли є ім’я і регістри, то це пряма адресація з базуванням та індексуванням.
Команди передачі даних MOV
Приклади:
MOV AH,CATS
MOV AX,BX
MOV AH,AL
MOV AH,6
Команди порівняння CMP, TEST, умовного JE, JG, JL, JNE, та безумовного JMP переходу
Приклади:
JMP FAD
CMP AH,01
JE C1
CMP AH,01
JNE C2
Команди виклику та повернення з процедури (підпрограми) CALL, RET
Приклад:
CALL PG
RET 4
Команди роботи зі стеком PUSH, POP
Приклад:
PUSH AX
POP
Команди роботи зі стрічковими даними LOADSB, MOVSB
Приклад:
MOV SI, OFFSET CATS
MOV DI, OFFSET RATS
MOV CX,3
REP MOVSB
Команда циклу LOOP
Приклад:
MOV CX,14
MOV SI,0
DAD: MOV AX,CAT[SI]
. . .
INC SI
LOOP DAD
. . .
MOV CX,10
C1: PUSH CH
MOV CX,20
C2: PUSH CX
MOV CX,30
C3: MOV AX,B2
LOOP C3
POP CX
LOOP C2
POP CX
LOOP C1
Команди побітової обробки
AND AX,OFFOOH ; (логічне множення)
OR AX,OFFOOH ; (логічне додавання)
XOR AH,OF1H
TEST AX,BX ; (виконується аналогічно AND, однак операнди не міняються)
Команди зсуву
SHR AL,1 ; (вправо)
MOV CL,3
SHL AL,CL ; (вліво)
SAR AL,1 ; (арифметичний зсув вправо)
ROR AL,1 ; (циклічний зсув вправо)
ROR AL,1 ; (циклічний зсув вправо з переносом)
Арифметичні команди
ADD AX,DX ; (додавання)
SUB AX,AX ; (віднімання)
MUL BX ; (множення)
DIV BX ; (ділення)
Команди переривання INT, STI, CLI
Команди вводу/виводу
IN AX,DX
OUT DX,AX
Команди роботи з прапорцями (признаками)
TEST AX,01100B
Команди керування HLT,WAIT
Команди завантаження сегментів LDS, LES
2. Загальні відомості про графіку.
Растрова графіка
Растрові зображення нагадують лист клітчастого паперу, на якому будь-яка клітка замальована або чорним, або білим кольором, утворюючи в сукупності малюнок. Піксель - основний елемент растрових зображень. Саме з таких елементів складається растрове зображення. У цифровому світі комп'ютерних зображень терміном піксель позначають декілька різних понять. Це може бути окрема точка екрану комп'ютера, окрема крапка надрукована на лазерному принтері або окремий елемент растрового зображення. Ці поняття не одне і теж, тому щоб уникнути плутанини слід називати їх таким чином: відео піксель при посиланні на зображення екрану комп'ютера; крапка при посиланні на окрему крапку, що створюється лазерним принтером.
Існує коефіцієнт прямокутності зображення, який введений спеціально для зображення кількості пікселів матриці малюнка по горизонталі і по вертикалі. Повертаючись до аналогії з листом паперу можна помітити, що будь-який растровий малюнок має певну кількість пікселів в горизонтальних і вертикальних лавах. Існують наступні коефіцієнти прямокутності для екранів: 320х200, 320х240, 600х400, 640х480, 800х600 і ін. Цей коефіцієнт часто називають розміром зображення.
Колір будь-якого пікселя растрового зображення запам'ятовується в комп'ютері за допомогою комбінації бітів. Чим більше бітів для цього використовується, тим більше відтінків кольорів можна одержати. Число бітів, використовуваних комп'ютером для будь-якого пікселя, називається бітовою глибиною пікселя. Найбільш просте растрове зображення складається з пікселів тих, що мають тільки два можливі кольори чорний і білий, і тому зображення, що складаються з пікселів цього вигляду, називаються однобітовими зображеннями. Число доступних кольорів або градацій сірого кольору рівне 2 в ступені рівної кількості бітів в пікселі. Кольори, що описуються 24 бітами, забезпечують більше 16 мільйонів доступних кольорів і їх часто називають природними кольорами.
Растрові зображення володіють безліччю характеристик, які повинні бути організовані і фіксовані комп'ютером. Розміри зображення і розташування пікселів в ньому це дві основні характеристики, які файл растрових зображень повинен зберегти, щоб створити картинку.. Оскільки розміри зображення зберігаються окремо, піксели запам'ятовуються один за іншим, як звичайний блок даних. Комп'ютеру не доводиться зберігати окремі позиції, він всього лише створює сітку за розмірами заданим коефіцієнтом прямокутності зображення, а потім заповнює її піксель за пікселем. Це найпростіший спосіб зберігання даного растрового зображення, але не найефективніший з погляду використання комп'ютерного часу і пам'яті. Ефективніший спосіб полягає в тому, щоб зберегти тільки кількість чорних і білих пікселів в будь-якому рядку. Цей метод стискає дані, які використовують растрові зображення. В цьому випадку вони займають менше пам'яті комп'ютера.
Роздільна здатність растру
Оскільки пікселі не мають своїх власних розмірів, вони набувають їх тільки при виведенні на деякі види пристроїв, такі як монітор або принтер. Для того, щоб пам'ятати дійсні розміри растрового малюнка, файли растрової графіки іноді зберігають роздільну здатність растру. Роздільна здатність це просто число елементів заданої області. Найбільший вплив на кількість пам'яті займаної растровим зображенням надають три факти:
Розмір зображення;
Бітова глибина кольору;
Формат файлу, використовуваного для зберігання зображення.
Існує пряма залежність розміру файлу растрового зображення. Чим більше в зображенні пікселів, тим більше розмір файлу. Чим більше бітів використовується в пікселі, тим більше буде файл. Багато файлів зображень володіють власними схемами стиснення, також можуть містити додаткові дані короткого опису зображення для попереднього перегляду.
Достоїнства растрової графіки
Растрова графіка ефективно представляє реальні образи. Реальний світ складається з мільярдів найдрібніших об'єктів і людське око якраз пристосоване для сприйняття величезного набору дискретних елементів, створюючи предмети. На своєму вищому рівні якості - зображення виглядають цілком реально подібно до того, як виглядають фотографії порівняно з малюнками. Це вірно тільки для дуже деталізованих зображень, звичайно одержуваних скануванням фотографій. Крім природного вигляду растрові зображення мають інші переваги. Пристрої висновку, такі як лазерні принтери, для створення зображень використовують набори крапок. Растрові зображення можуть бути дуже легко роздруковані на таких принтерах, тому що комп'ютерам легко управляти пристроєм висновку для представлення окремих пікселів за допомогою крапок.
Недоліки растрової графіки
Як вже мовилося, растрові зображення займають велику кількість пам'яті. Існує так само проблема редагування растрових зображень, оскільки великі растрові зображення займають значні масиви пам'яті, то для забезпечення роботи функцій редагування таких зображень споживаються так само значні масиви пам'яті і інші ресурси комп'ютера.
Векторна графіка
На відміну від растрової графіки у векторній графіці зображення будується за допомогою математичних описів об'єктів, кіл і ліній. Ключовим моментом векторної графіки є те, що вона використовує комбінацію комп'ютерних команд і математичних формул для об'єкту. Це дозволяє комп'ютерним пристроям обчислювати і поміщати в потрібному місці реальні крапки при малюванні цих об'єктів. Така особливість векторної графіки дає їй ряд переваг перед растровою графікою, але в той же час є причиною її недоліків. Векторну графіку часто називають об'єктно-орієнтованою графікою або креслярською графікою.
Прості об'єкти, такі як кола, лінії, сфери, куби і тому подібне називається примітивами, і використовуються при створенні складніших об'єктів. У векторній графіці об'єкти створюються шляхом комбінації різних об'єктів. Для створення об'єктів примітивів використовуються прості описи. Пряма лінія, дуги, кола, еліпси і області однотонного або такого, що змінюється світла - це двомірні малюнки, використовувані для створення деталізованих зображень. У тривимірній комп'ютерній графіці для створення складних малюнків можуть використовуватися такі елементи як сфери, куби. Команди, що описують векторні об'єкти більшості користувачів можливо ніколи не доведеться побачити. Визначати, як описувати об'єкти буде комп'ютерна програма, яка використовується для підготовки векторних об'єктів. Для створення векторних малюнків необхідно використовувати один з численних ілюстраційних пакетів.
Програми векторної графіки здатні створювати растрові зображення як одного з типів об'єктів. Це можливо тому, що растровий малюнок просто набір інструкцій для комп'ютера, і оскільки інструкції ці дуже прості, то векторна графіка здатна сприймати растрові зображення нарівні з рештою об'єктів, хоча можна помістити растрові зображення у вигляді об'єкту векторному форматі, але не вдається відредагувати і змінити в ньому окремі піксели.
Колір у векторній графіці
Різні векторні формати володіють різними колірними можливостями. Колір об'єкту зберігається у вигляді частини його векторного опису. Деякі векторні файли можуть створити растровий ескіз зображень тих, що зберігаються в них. Ці растрові картинки, іноді звані короткими описами зображень, звичайно є ескізи векторних малюнків в цілому.
Достоїнства векторної графіки
Найсильніша сторона векторної графіки в тому, що вона використовує всі переваги роздільної здатності будь-якого пристрою висновку. Це дозволяє змінювати розміри векторного малюнка без втрати його якості. Векторні команди просто повідомляють пристрій виводу, що необхідно намалювати об'єкт заданого розміру, використовуючи стільки крапок скільки можливо. Іншими словами, ніж більше крапок зможе використовувати пристрій виводу для створення об'єкту, тим краще він виглядатиме. Растровий формат файлу точно визначає, скільки необхідно створити пікселів і ця кількість змінюється разом з роздільною здатністю пристрою висновку. Натомість відбувається одне з двох або при збільшенні роздільної здатності, розмір растрового кола зменшується, оскільки зменшується розмір точки складових пікселів; або розмір кола залишається однаковим, але принтери з високою роздільною здатністю використовують більше крапок для будь-якого пікселя. Векторна графіка володіє ще однією важливою перевагою, тут можна редагувати окремі частини малюнка не роблячи впливу на інші, наприклад, якщо потрібно зробити більше або менше тільки один об'єкт на деякому зображенні, необхідно просто вибрати його і здійснити задумане. Об'єкти на малюнку можуть перекриватися без жодної дії один на одного. Векторне зображення, що не містить растрових об'єктів, займає відносно не велике місце в пам'яті комп'ютера. Навіть дуже деталізовані векторні малюнки, що складаються з 1000 об'єктів, рідко перевищують декілька сотень кілобайт.
Недоліки векторної графіки
Природа уникає прямих ліній. На жаль, вони є основними компонентами векторних малюнків. До недавнього часу це означало, що долею векторної графіки були зображення, які ніколи не прагнули виглядати природно, наприклад, двомірні креслення і кругові діаграми, створені спеціальними програмами САПР, двох і трьох мірні технічні ілюстрації, стилізовані малюнки і значки, що складаються з прямих ліній і областей, замальованих однотонним кольором. Векторні малюнки складаються з різних команд. Що посилаються від комп'ютера до пристроїв виводу (принтеру). Принтери містять свої власні мікропроцесори, які інтерпретують ці команди і намагаються їх перевести в крапки на листі паперу. Іноді із-за проблем зв'язку між двома процесорами принтер не може роздрукувати окремі деталі малюнків. Залежно від типів принтера трапляються проблеми, і у вас може опинитися чистий лист папери, частково надрукований малюнок або повідомлення про помилку.
3. Формати графічних файлів
Опис формату BMP для Windows 3.0 (DIB)
Основною відмінністю файлів нового формату (DIB) - Device Independent Bitmap (апаратно-незалежний бітовий образ) є те, що в них використовується кодування кольорів з однією бітовою площиною.
Файли бітових образів нового формату починаються із структури FileHeader
word bfType; //тип файлу (для бітового образу - BM);
dword bfSize; //розмір файлу в dword word;
bfReserved1; //не використовується word bfReserved2; //не використовується
dword bfOffbits; //зміщення даних бітового образу від заголовка в байтах.
Безпосередньо за нею розташовується структура Info, що містить всю інформацію про бітовий образ. Вона ділиться на дві частини: структуру InfoHeader, що описує розміри і колірний формат бітового образу, і масив структур RGBquad, що визначає колірну палітру:
MAPINFO {InfoHeader bmiHeader;
RGBquad bmiColors[1]; }
Структура InfoHeader {dword Size; //число байт, займаних структурою InfoHeader
dword Width; //ширина бітового образу в пікселях;
dword Height; //висота бітового образу в пікселях;
word Planes; //число бітових площин пристрою;
word BitCount; //число бітів на піксель;
dword Compression; //тип стиснення;
dword SizeImage; //розмір картинки в байтах;
dword XPelsPerMeter; //горизонтальний дозвіл пристрою, пікселем;
dword YPelPerMeter; //вертикальний дозвіл пристрою, пікселем;
dword ClrUsed; //число використовуваних кольорів;
dword ClrImportant; //число "важливих" кольорів.
BI_RGB - стиснення відсутнє;
BI_RLE8 - стиснення для формату 8 біт на піксел;
BI_RLE4 - стиснення для формату 4 біта на піксель.
структура RGBquad
byte rgbRed; //інтенсивність червоного;
byte rgbGreen; //інтенсивність зеленого;
byte rgbBlue; //інтенсивність блакитного;
byte rgbReserved; //не використовується.
Опис формату PCX
Файли зображень, які використовуються в продуктах сімейства PC Paintbrush і FRIEZE, були розроблені фірмою Zsoft. Розширення файлу DOS - PCX, тип формату растровий. Відкривати або імпортувати файли PCX можуть майже всі графічні застосування для персональних комп'ютерів. Колірні можливості 1, 2, 4, 8 або 24- бітового кольору, ніяких відтінків сірого. Завжди застосовується стиснення ROB. У цього формату є ряд недоліків: 1) не підтримує зображення з відтінками сірого або таблиці корекції шкали сірого; 2) не підтримує кольори CMYK або інші системи відмінні від RGB; 3) численні варіанти, особливо при роботі з кольорами, можуть робити роботу з файлом неможливим; 4) незручна схема стиснення насправді може збільшувати розміри деяких файлів.
Серед позитивних сторін формату РСХ можна назвати те, що він хороший для зображень, які: 1)створюють обмежену палітру кольорів (краще всього 16 або 256); 2) не є зображеннями від сканованими або фотографіями, які погано стискаються; 3)повинні бути читаними всіма додатками персонального комп'ютера.
Опис інформації про палітру
Інформація про 16-кольорову палітру (EGA/VGA). Інформація про палітру запам'ятовується в одному з двох різних форматів. У стандартному форматі RGB (IBM EGA, IBM VGA) дані запам'ятовуються в 16 трійках. Кожна трійка складається з 3 байтів із значеннями червоного (Red), зеленого (Green) і синього (Blue) кольорів. Значення можуть знаходитися в діапазоні 0-255, і тому необхідна їх інтерпретація у формат використовуваного устаткування.
Інформація про 256-кольорову палітру VGA. 256-кольорова палітра форматується і інтерпретується точно так, як і 16-кольорова. Палітра (число кольорів * 3 байти довжини) додається в кінець PCX файлу і їй передує байт з десятковим значенням 12. Для визначення палітри VGA BIOS досить розділити прочитані значення кольорів на 4.
Розширений блок GIF
Для того, щоб забезпечити акуратне розширення визначення GIF, необхідний механізм для визначення упаковки усередині потоку даних GIF. Вказане розширення було визначено і документовано CompuServe для того, щоб передбачити керований спосіб удосконалень.
Розширений блок GIF пакується способом, схожим на той, який використовувався для растрових даних, але не стискається.
Розширений блок GIF може безпосередньо передувати дескриптору зображення або знаходитися перед термінатором GIF.
Всі декодери GIF повинні бути здатні розпізнавати присутність розширеного блоку GIF і потім читати його, якщо вони не можуть обробити функціональний код. Це гарантує, що старі декодери зможуть обробляти файли зображень GIF в майбутньому, хоч і без додаткових функціональних можливостей.
Обробка декількох зображень
Оскільки потік даних GIF може містити декілька зображень, необхідно описати обробку і висвічення таких файлів. Оскільки дескриптор зображення допускає розміщення зображення в межах логічного екрану, можна визначити послідовність зображень, кожне з яких займає частину екрану, але їх сукупність заповнює екран цілком. У подібних ситуаціях лінії поведінки при обробці зображень полягають в наступному:
1. Не робити пауз між зображеннями. Кожне обробляється відразу ж, як тільки буде розпізнане декодировщиком.
2. Кожне зображення переписує будь-яке інше зображення що вже знаходиться усередині його вікна. Екран очищається тільки на початку і в кінці обробки GIF-зображень.
Формат IMG
Розширення файлу DOS – IMG, тип формату – растровий. Колірні можливості 2, 16, 256 або 16 мільйонів кольорів. Просте стиснення ROE. Структура файлу IMG дуже проста. Спочатку йде заголовок файлу, а услід растрові дані. У заголовку знаходиться інформація про растрове зображення в цілому: глибина кольору зображення, ширина і висота в пікселях, початкова ширина і висота в пікселях. Останні відомості корисні, коли растрові зображення переносяться з інших комп'ютерів, де коефіцієнт прямокутності може бути іншим.
При зберіганні растрові дані стискаються по простій схемі групового кодування, палітри кольорів у файлах цього формату не використовуються, оскільки інформація про колір зберігається безпосередньо в кожному пікселі растрового даного.
Растровий формат програми Macpaint
Розширення файлу DOS – МАС, тип формату растровий. Програми, які можуть відкривати або імпортувати файли МАС – більшість застосувань Макінтош, деякі растрові редактори і видавничі системи. Колірні можливості – монохромний. Стиснення – RLE.
Macpaint – перший формат растрової графіки для комп'ютерів Macintosh.
Формат програми Microsoft paint
Розширення файлу DOS – MSP, тип формату растровий. Програми, які можуть відкривати або імпортувати файли MSP: Microsoft Paint Brush, більшість програм перетворення графічних файлів. Колірні можливості – монохромний. Використовується просте стиснення RLE. Перші 32 байти MSP файлу зайняті заголовком зображення, в якому записані ширина і висота растрового малюнка в пікселях і коефіцієнти прямокутності окремих пікселів. Слідом за заголовком йдуть дійсні дані растрового зображення. Піксели можуть бути тільки однобітовими і піксельні дані кодуються за допомогою простої схеми стиснення RLE.
4. Системи кольорів
Колір аддитивний і субтрактивний
Аддитивний колір виходить при з'єднанні світла різних кольорів. У цій схемі відсутність всіх кольорів є чорний колір, а присутність всіх кольорів - білий. Схема аддитивних кольорів працює з випромінюваним світлом, наприклад, монітор комп'ютера. У схемі субтрактивних кольорів відбувається зворотний процес. Тут виходить який-небудь колір при відніманні інших кольорів із загального променя світла. У цій схемі білий колір з'являється в результаті відсутності всіх кольорів, тоді як їх присутність дає чорний колір. Схема субтрактивних кольорів працює з відбитим світлом.
Система кольорів RGB
Монітор комп'ютера створює колір безпосередньо випромінюванням світла і, використовує схему кольорів RGB. Якщо зблизька подивитися на екран монітора, то можна помітити, що він складається з найдрібніших точок червоного, зеленого і синього кольорів. Комп'ютер може управляти кількістю світла, що випромінюється через будь-яку забарвлену крапку і, комбінуючи різні поєднання будь-яких кольорів, може створити будь-який колір. Будучи визначена природою комп'ютерних моніторів, схема RGB є найпопулярнішою і поширенішою, але у неї є недолік: комп'ютерні малюнки не завжди повинні бути присутніми тільки на моніторі, іноді їх доводиться роздруковувати, тоді необхідно використовувати іншу систему кольорів - CMYK.
Система кольорів CMYK
Дана система була широко відома задовго до того, як комп'ютери стали використовуватися для створення графічних зображень. Для розділення кольорів зображення на кольори CMYK застосовують комп'ютери, а для поліграфії розроблені їх спеціальні моделі. Перетворення кольорів з системи RGB в систему CMYK стикається з рядом проблем. Основна складність полягає в тому, що в різних системах кольору можуть мінятися. У цих систем різна сама природа отримання кольорів і те, що ми бачимо на екрані моніторів ніколи не можна точно повторити при друці. В даний час існують програми, які дозволяє працювати безпосередньо в кольорах CMYK. Програми векторної графіки вже надійно володіють цією здатністю, а програми растрової графіки лише останнім часом стали надавати користувачам засоби роботи з кольорами CMYK і точного управління тим, як малюнок виглядатиме при друці.
Системи кольорів HSB і HSL
Системи кольорів HSB і HSL базується на обмеженнях, що накладаються апаратним забезпеченням. У системі HSB опис кольору представляється у вигляді тону, насиченості і яскравості. У іншій системі HSL задається тон, насиченість і освітленість. Тон є конкретний відтінок кольору. Насиченість кольору характеризує його відносну інтенсивність або частоту. Яскравість або освітленість показують величину чорного відтінку доданого до кольору, що робить його темнішим. Система HSB добре узгоджується з моделлю сприйняття кольору людиною, тобто він є еквівалентом довжини хвилі світла. Насиченість - інтенсивність хвилі, а яскравість - загальна кількість світла. Недоліком цієї системи є те, що для роботи на моніторах комп'ютера її необхідно перетворити в систему RGB, а для чотириколірного друку в систему CMYK.
5. Основні поняття тривимірної графіки
У більшості застосувань тих, що використовують тривимірну графіку 3D-объекты складаються з безлічі багатокутників розміщених таким чином, що створюється реалістичний образ. Сотні або тисячі багатокутників необхідних для єдиного 3D- об'єкту, утворюють величезний масив даних, які треба створити і якими необхідно управляти.
API (Application Programming Interface) Комплект програм, як прикладна програма використовує для звернення до завдань виконуваним на рівні операційної системи. Тобто програми зв'язку апаратних засобів (таких, як, наприклад, відеопроцесор) із застосуваннями, наприклад, іграми.
DirectX API для Microsoft® Windows® сфокусований на розробці мультимедійних застосувань. За словами Microsoft, DirectX забезпечує розробників програмного забезпечення гнучкістю необхідною для роботи в Internet і відкриває шлях до використання щонайпотужніших можливостей сучасних персональних комп'ютерів в роботі з мультимедійними застосуваннями.
Direct3D Частина DirectX орієнтована на виконання тривимірної графіки. Direct3D пропонується компанією Microsoft як важливе доповнення до API для ігор і інших 3D-приложений. Direct3D, як частина DirectX 6.0, оптимізований для технології 3DNow! Direct3D існує тільки в Windows 95, в недалекому майбутньому з'явиться і в Windows NT 5.0. Direct3D має два режими: RM (retained mode), або абстрактний і IM (immediate mode), або безпосередній. IМ складається з тонкого рівня, який спілкується з апаратурою і забезпечує найвищу швидкодію. Абстрактний режим - високорівневий інтерфейс, що покриває безліч операцій для програміста, включаючи ініціалізацію і трансформацію. У обох режимів є достоїнства і недоліки, більшість Direct3D-игр використовують IM.
OpenGL OpenGL - відкритий 3D API, створений компанією SGI і контрольований асоціацією OpenGL Architecture Review Board (ARB), в яку входять DEC E&S, IBM, Intel, Intergraph, Microsoft і SGI. OpenGL реалізує широкий діапазон функцій від виведення крапки, лінії або полігону до рендеринга кривих поверхонь NURBS, покритих текстурою. OpenGL довгий час використовувався для роботи з тривимірною графікою на комп'ютерах професійного рівня. Зараз багато розробників ігор використовують цей API. OpenGL також оптимізується для спільної роботи з технологією 3DNow! OpenGL-драйвер може бути реалізований в трьох варіантах: ICD, MCD і міні-порт. ICD (Installable Client Driver) повністю включає всі стадії конвеєра OpenGL, що дає максимальну швидкодію, але розробка ICD-драйвера займає велику кількість часу. MCD (Mini Client Driver) розроблений для внесення абстракції в конвеєр OpenGL, і тому написання драйвера менш трудомістко. MCD поступається ICD в швидкодії, плюс до цього MCD працює тільки в Windows NT. Міні-порт - драйвер, призначений для однієї конкретної гри (або движка), звичайно для GLQuake і Quake 2. Міні-порт може працювати за принципом ICD (Rage Pro), через власний API (Voodoo 2) або через Direct3D (lntel740). У останньому випадку він називається в...