Распечатать страницу

Лабораторна робота №10, Графічні можливості системи Пролог-Д

« Назад

Код роботи: 1118

Вид роботи: Лабораторна робота

Предмет: Технологія створення програмних та інтелектуальних систем

Тема: №10, Графічні можливості системи Пролог-Д

Кількість сторінок: 13

Дата виконання: 2016

Мова написання: українська

Ціна: 250 грн

Мета: отримання основних навичок роботи з графікою

Хід виконання роботи

1. Запустити систему Пролог-Д.

2. Ознайомитися з теоретичною частиною.

Коли мова йде про комп'ютерну графіку, побудова зображення на екрані інтерпретується серією команд. Таким чином, усяке зображення асоціюється з алгоритмом його побудови.

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

Параметр v - вертикальний розмір, h - горизонтальний розмір екрана. Для стандартної плати відеоадаптера VGA v=349, h=639.

У предикатах ТОЧКА, ЛИНИЯ, ОКРУЖНОСТЬ, ЗАКРАСКА останній параметр задає колір. Якщо на цьому місці стоїть не конкретизована змінна, то виводиться повідомлення про помилку.

Для позначення кольорів при використанні відеоадаптера VGA прийняте кодування, зображене в таблиці 1.

Для використання графіки необхідно відкрити графічний файл за допомогою предиката ЗАПИСЬ_В (“grp:”). Після завершення роботи необхідно відкрити файл для виводу тексту ЗАПИСЬ_В(“con:”).

Таблиця 1. Таблиця кодування кольорів в системі Пролог-Д

0

чорний

8

темно сірий

1

синій

9

світло синій

2

зелений

10

світло зелений

3

блакитний

11

світле блакитний

4

коричневий

12

червоний

5

фіолетовий

13

бузковий

6

темно жовтий

14

Жовтий

7

сірий

15

Білий

У системі Пролог-Д передбачені наступні вбудовані графічні предикати:

1. ТОЧКА

Синтаксис: ТОЧКА(Арг1,Арг2,Арг3)

Убудований предикат ТОЧКА має три аргументи. Нижче наведені результати виконання залежно від типу аргументу.

ТОЧКА(ц1,ц2,ц3) Установити крапку з координатами (ц1,ц2) і кольором ц3;

ТОЧКА(ц1,ц2,П3) П3 := колір_крапки(ц1,ц2);

ТОЧКА(ц1,П2,ц3) Малювати лінію з початковою крапкою (ц1,0), кінцевою - (ц1,211) кольором ц3;

ТОЧКА(П1,ц2,ц3) Малювати лінію з початковою крапкою (0,ц2), кінцевою - (255,ц2) кольором ц3;

ТОЧКА(П1,П2,ц3) Заповнити екран кольором ц3.

У цих п'ятьох випадках предикат істиний, інакше – виконання програми припиняється й виводиться повідомлення про помилку: "Невыполнимый предикат ТОЧКА".

2. ЛИНИЯ

Синтаксис: ЛИНИЯ(Арг1,Арг2,Арг3,Арг4,Арг5).

Цей убудований предикат має п'ять аргументів. П'ятий аргумент завжди повинен бути цілим, арифметичним виразом або змінним, конкретизованим цілим. Результати виконання наведені нижче:

ЛИНИЯ(ц1,ц2,ц3,ц4,ц) Малювати лінію з початковою крапкою (ц1,ц2), кінцевою - (ц3,ц4), кольорами ц;

ЛИНИЯ(ц1,ц2,ц3,П4,ц) Малювати зафарбований трикутник з вершинами (ц1,ц2), (ц3,0), (ц3,211) і кольорами ц;

ЛИНИЯ(ц1,ц2,П3,ц4,ц) Малювати зафарбований трикутник з вершинами (ц1,ц2), (0,ц4), (255,ц4) і кольорами ц;

ЛИНИЯ(ц1,П2,ц3,ц4,ц) Малювати зафарбований трикутник з вершинами (ц1,0), (ц1,211), (ц3,ц4) і кольорами ц;

ЛИНИЯ(П1,ц2,ц3,ц4,ц) Малювати зафарбований трикутник з вершинами (0,ц2), (255,ц3), (ц3,ц4) і кольорами ц;

ЛИНИЯ(П1,П2,ц3,ц4,ц) | ЛИНИЯ(ц1,ц2,П3,П4,ц) |

ЛИНИЯ(ц1,П2,П3,П4,ц) | ЛИНИЯ(П1,ц2,П3,П4,ц) – Заповнення екрана кольорами ц

ЛИНИЯ(П1,П2,ц3,П4,ц) | ЛИНИЯ(П1,П2,П3,ц4,ц) |

ЛИНИЯ(П1,П2,П3,П4,ц) | ЛИНИЯ(ц1,П2,ц3,П4,ц) – Вертикальними, зафарбованими кольорами ц прямокутник, з вершинами (ц1,0), (ц1,211), (ц2,0), (ц2,211);

ЛИНИЯ(П1,ц2,П3,ц4,ц) Горизонтальний зафарбований кольорами ц прямокутник з вершинами (0,ц2), (255,ц2), (0,ц4), (255,ц4);

ЛИНИЯ(ц1,П2,П3,ц4,ц) Чотирикутник кольорами ц із вершинами (ц1,0), (ц1,211), (0,ц4), (255,ц4);

ЛИНИЯ(П1,ц2,ц3,П4,ц) Чотирикутник кольорами ц із вершинами (0,ц2), (255,ц2), (ц3,0), (ц3,211).

У цих шістнадцятьох випадках предикат вірний, інакше виконання програми припиняється й видається повідомлення про помилку. 

3. ОКРУЖНОСТЬ

Синтаксис: ОКРУЖНОСТЬ(Арг1,Арг2,Арг3,Арг4).

Убудований предикат КОЛО має чотири аргументи. Четвертим аргументом завжди повинне бути ціле, арифметичне вирази або змінним, конкретизованим цілим. Нижче наведені результати виконання залежно від типів аргументів.

ОКРУЖНОСТЬ(ц1,ц2,ц3,ц) Коло із центром (ц1,ц2), радіусом ц3, кольорами ц;

ОКРУЖНОСТЬ(ц1,ц2,П3,ц) | ОКРУЖНОСТЬ( ц1,П2,П3,ц) |

ОКРУЖНОСТЬ(П1,ц2,П3,ц) Заповнення екрана кольорами ц ОКРУЖНОСТЬ(П1,П2,П3,ц) | ОКРУЖНОСТЬ(П1,П2,ц3,ц) |

ОКРУЖНОСТЬ(ц1,П2,ц3,ц) Вертикальний зафарбований кольорами ц прямокутник з вершинами: (ц1-ц3,0), (ц1-ц3,211), (ц1+ц3,0), (ц1+ц3,211);

ОКРУЖНОСТЬ(П1,ц2,ц3,ц) Горизонтальний зафарбований кольорами ц прямокутник з вершинами: (0,ц2-ц3), (255,ц2-ц3), (0,ц2+ц3), (255,ц2+ц3); У цих восьми випадках предикат вірний, інакше виконання програми припиняється й виводиться повідомлення про помилку: "Невыполнимый предикат ОКРУЖНОСТЬ" 

4. ЗАКРАСКА

Синтаксис: ЗАКРАСКА(Арг1,Арг2,Арг3,Арг4).

Убудований предикат ЗАКРАСКА(має чотири аргументи. Процедурно цей предикат означає зафарбувати кольорами Арг3 усередині контуру із граничними кольорами Арг4 починаючи із крапки (Арг1,Арг2). Предикат завжди вірний. Всі аргументи повинні бути цілими, арифметичними виразами або змінними, конкретизованими цілими. Якщо ця умова не виконується, то виконання програми припиняється й виводиться повідомлення про помилку: "Невыполнимый предикат ЗАКРАСКА".

Приклад: зафарбований квадрат

Б1118, 1

Як приклад приводиться опис кута, вершина якого знаходиться в точці (x,y):

Б1118, 2

Спочатку буде намальований відрізок, що з'єднує точки (100,100) і (10,10), а потім відрізок, що з'єднує точки (100,100) і (50,50). Якби п'ятим аргументом предикатів ЛИНИЯ було б число рівне нулю, то точки відрізків були б не видимі. Не обов'язково, щоб опис всієї картинки був записаний в одному реченні. Частина опису може бути виділена у вигляді окремого речення. Програму попереднього приклада можна модифікувати:

Б1118, 3

Нова програма буде виконувати ті ж самі функції, хоча й записується у два речення. Система Пролог-Д допускає можливість використання змінних у графічних примітивах. Як приклад, приводиться опис вектора, що виходить із точки A з координатами (x, y) у точку B координатами (s,t):

Б1118, 4

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

Як приклад наводиться питання:

Б1118, 5

У результаті відповіді на це питання на екрані з'явиться трикутник білого кольору. У даній ситуації все елементарно. Причина появи білого трикутника в тому, що величина абсциси другої точки не визначена, у цьому випадку абсциса повинна бути будь-яким числом, у припустимих межах. Як правило, область припустимих значень обмежена розмірами екрана. Мовні засоби Пролога-Д забезпечують можливість нарощувати визначення, природним шляхом підтримують структурність опису об'єкта. Як приклад, приводиться опис побудови будиночка. Будиночок можна визначити як трикутник і квадрат, сполучені однією стороною. Квадрат можна визначити за допомогою чотирьох відрізків формально це виглядає так:

Б1118, 6

Аналогічно визначається трикутник:

Б1118, 7

(Предикат з ім'ям ДЕЛЕНИЕ - предикат розподілу першого аргументу на другий, частка в третьому, а предикат з ім'ям СЛОЖЕНИЕ є додавання першого аргументу із другим, результат у третьому аргументі.).

Визначення дома довжиною 20 одиниць, висотою поверху 10 одиниць і висотою даху 20 одиниць має вигляд:

Б1118, 8

Знову необхідно розділити цей опис на дві частини: в одній частині визначається дах, а в інший - поверх (це саме той випадок, коли будинок починають будувати з даху).

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

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

Б1118, 9

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

Наприклад картина, що містить будинок, та пташку, що летить є прикладом складного синтетичного об'єкта, і використання рекурсії для визначення динамічної зміни об'єкта:

Б1118, 10

Б1118, 11

У відповідь на питання:

?дом(70,110),птица(120,50);

на екрані буде побудований будинок і намальована пташка, що махає крилами. Даний приклад являє собою сукупність двох описів - будинку й птаха, що махає крилами, кожний з яких був розібраний вище. Зверніть увагу тільки на одну обставину - предикат птах повинен бути описаний після предиката будинок, тому що в ньому є кінцева рекурсія - типу петлі.

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

Б1118, 12

Графічні можливості «Пролог-Д» більш докладно описані у файлі допомоги - кнопка Б1118, 13  або вікно Помощь, Язык, Встроенные предикаты, Графика.

3. Завдання:

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

2. Наберіть питання:

?ЛИНИЯ(x, 10, 100, 100, 1).

Поясніть результат і запишіть вихідний текст завдання.

3. Побудуйте зображення невеликого будинку з вікном.

4. Оформити звіт, в який включити виконання завдань, Пролог- програму, ПИТАННЯ, представлені засобами Прологу, і відповіді на дані ПИТАННЯ, видані Пролог-системою.