Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
самост1_1new_druk!!!.doc
Скачиваний:
22
Добавлен:
13.11.2019
Размер:
1.61 Mб
Скачать

Побудова рухомих зображень

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

рис.2

Точку на ху- площині можна перенести в нове положення шляхом додавання до її координат констант переносу: (рис.1)

, .

Для векторної форми

, , ;

,

P’=P+T.

Перенесення складного об'єкту виконується шляхом перенесення всіх його точок, – реперних точок: .

Масштабування точки передбачає домноження її координат на коефіцієнти масштабування: , .

При переході до векторної форми, де , можна записати

,

P’=PS

При повороті точки на кут відносно початку координат нові координати визначаються так (проти годинникової стрілки, додатний поворот):

,

.

В векторній формі, де ,

,

P’=PR

При від'ємному повороті (за годинниковою стрілкою) Розрахунок повороту в полярних координатах можна виразити наступним чином (рис.2):

;

.

На практиці наведені елементарні перетворення при побудові зображень на екрані поєднують. Для цього координати точки приводяться до однорідних координат. При цьому всі перетворення можна реалізувати за допомогою множення матриць.

При від'ємному повороті (за годинниковою стрілкою) Розрахунок повороту в полярних координатах можна виразити наступним чином (рис.2):

;

,

рис.3

На практиці наведені елементарні перетворення при побудові зображень на екрані поєднують. Для цього координати точки приводяться до однорідних координат. При цьому всі перетворення можна реалізувати за допомогою множення матриць.

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

Для координати є нормалізованими.

Декартові координати точки на площині враховуються як:

.

Надалі двомірні перетворення в площині екрану будемо розглядати як перетворення в однорідних нормалізованих координатах .

Для перетворень в нормалізованих однорідних координатах розмірність матриць і векторів перетворень збільшується на 1.

Перенесення.

, ,

P’=PT(Dx,Dy)

Масштабування.

P’=PS(Sx,Sy)

.

Поворот.

P’=PR()

Всі базові перетворення виконуються відносно початку координат. Для виконання перетворень відносно будь-якої точки використовують композицію базових перетворень.

Розглянемо поворот об'єкту в площині екрану навколо довільної точки . Таке перетворення можна здійснити в результаті послідовності двох базових перетворень: перенесення поворот перенесення.

  1. Перенесення т. в початок координат (рис.3).

  1. Поворот об'єкту на кут (рис.4).

  1. Перенесення, при якому т. повертається у початкове положення (рис.5).

Матриця результуючого перетворення буде такою:

рис.4. рис.5. рис.6.

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

Як відомо, перемноження матриць некомутативне в загальному випадку (результат залежить від переставлення матриць). Це означає, що результуюче перетворення залежить від порядку виконання базових перетворень. Однак, в окремих випадках для двох базових перетворень і виконується закон комутативності (порядок їх виконання не вилине на кінцевий результат).

Композиція загального вигляду, складена з послідовності , описується матрицею

.

Елементи утворюють об'єднану матрицю , а і описують сумарне перенесення.

Для розрахунку , тобто для виконання результуючого перетворення, необхідно виконати перемноження вектора на матрицю . Це вимагає 9 операцій множення і 6 операцій підсумовування. Структура останнього стовпця матриці дозволяє спростити такі розрахунки:

,

тобто звести їх до 4 операцій множення і 4 підсумовування.

Спрощення розрахунків тим більше відчутне в часі, чим більше точок об'єкту вимагають перетворень.

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

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

Матриця тривимірного переносу має вигляд

,

звідки перенос точки в точку буде мати вигляд (у векторній формі):

Матриця тривимірного масштабування:

,

звідки масштабування точки буде мати вигляд:

.

При виконанні тривимірного повороту розглядають повороти відносно кожної з осей:

Поворот навколо осі :

Поворот навколо осі :

Поворот навколо осі :

Стовпці і рядки верхньої лівої підматриці матриць і є взаємно-ортогональними одиничними векторами.

Всі матриці тривимірних перетворень мають обернені матриці. Матриця отримується шляхом підстановки знака "-" перед ; --заміною на обернені їм значення; --шляхом вибору від'ємного кута повороту.

Результатом довільної послідовності поворотів навколо осей і є матриця:

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

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

Створення графічних примітивів.

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

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

Рис. 1. Побудова графіка на екрані монітора

При побудові графіків для приведення реальних координат до машинних в загальному випадку (рис. 1) використовують наступні вирази:

; (1)

, (2)

де Xмаш , Yмаш - поточні машинні координати точки в пікселях ;

, - відображення центру реальних координат на екрані в машинних координатах ;

Xреальн ,Yреальн - поточні реальні координати точки ;

kX, kY - коефіцієнти перетворення .

Коефіцієнти перетворення в загальному випадку розраховують за наступними співвідношеннями :

; (3)

. (4)

Отже, для побудови графіка довільної функції можна скористатися наступним алгоритмом:

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

  2. Визначити значення коефіцієнтів перетворення для стискання (у випадку, якщо максимальні значення функції або аргументу перевищують допустиму роздільну здатність монітора) або розширення діапазонів значень функції і аргументу для нормального візуального сприйняття заданої функції на екрані монітора. Наприклад, діапазон зміни значень функції синус від -1 до 1. Якщо не ввести коефіцієнт розтягу то на екрані монітора при побудові графіка функції одержимо пряму лінію. Домноживши значення Y на ky = 100, одержимо функцію синуса в звичному для нас вигляді.

  3. Побудувати графік функції, з’єднуючи за допомогою ліній (процедури LINE() або LINETO()) попередньо обраховані значення координат точки функції з наступними.

  4. Здійснити розмітку осей через певні проміжки табулювання для X та Y.

Для розмітки осей користуються процедурами LINE() і LINETO() для зображення відміток на осях, а для підписування числових значень поблизу відміток – процедурами OUTTEXT() і OUTTEXTXY().

Процедура OUTTEXT() виводить текст за поточним положенням вказівника. Звертання

OUTTEXT(<текст>),

де <текст> – вираз типу string, що вказує на текст, який виводиться на екран монітора.

Процедура OUTTEXTXY() виводить текст за заданими координатами. Формат звертання

OUTTEXTXY(X,Y, <текст>),

де X,Y – змінні типу integer – координати точки, в яку виводитиметься текст, <текст> – вираз типу string, що вказує на текст, який виводитиметься на екран монітора.

Процедура SETTEXTSTYLE() встановлює тип шрифта, орієнтацію та розмір тексту, що виводиться на екран монітора. Синтаксис:

SETTEXTSTYLE(Font, Direction, SizeChar),

де Font - змінна типу word, що вказує на тип шрифта, Direction - змінна типу word, що визначає напрям виведення тексту (0 – горизонтально, 1 – вертикально), SizeChar – змінна типу word для встановлення розміру шрифта.

Процедури керування звуковими сигналами.

Поряд із підпрограмами організації роботи з екраном модуль Crt включає засоби керування звуком. У персональних ЕОМ є можливість генерувати звукові сигнали за допомогою вбудованого динаміка частотою 37 - 32767 Гц. Голосність звука не регулюється. Стандартний звуковий сигнал ("біп") постійної тривалості (0.25 с) і частоти (800 Гц) викликається сьомим символом (^G) кодової таблиці ASCII.

Приклад: writeln('помилка в даних',^G); writeln('працює процедура',#7,#7); writeln('підключен драйвер',Chr(7),Chr(7));

Для керування частотою звука і його тривалістю в мові Паскаль використовуються стандартні процедури: sound(І) - активізує звукові засоби ПЕОМ. Ціле значення I вказує частоту звучання звука в герцах. Звук зазначеної частоти буде генеруватися доти, поки не буде скасований процедурою NoSoud; NoSound - скасування звука. Скасовує звуковий режим, заданий процедурою Sound; Delay(I) - вказує час, у продовж якого лунає сигнал.

Приклад: Begin

Sound(500);

Delay(2000);

NoSound

End;

У даному прикладі звуковий сигнал частотою 500 Гц буде звучати 2 секунди (2000 мс).

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

Нота

Велика октава

Мала октава

Перша октава

Друга октава

До

130.81

261.63

523.25

1046.50

Ре

146.83

293.66

587.33

1174.07

Мі

164.81

329.63

659.26

1318.05

Фа

174.61

349.23

698.46

1396.09

Соль

196.00

392.00

784.99

1568.00

Ля

220.00

440.00

880.00

1760.00

Сі

246.94

493.88

987.77

1975.00

Для використання в процедурі Sound усі зазначені в таблиці значення частот округлюються.

Питання для самоконтролю:

  1. Для чого використовують чергування засвічувань і гасінь зображення?

  2. Що називають анімацією?

  3. Який циклічний алгоритм треба виконати для імітації руху об’єкта на екрані?

  4. Як здійснюється масштабування при побудові графіків на екрані монітора комп’ютера.

  5. Які процедури та функції мови Турбо-Паскаль для управління текстом в графічному режимі вам відомі?

  6. Як встановити поточний стиль тексту?

  7. Які процедури керують яскравістю зображення?

  8. Яка функція використовується для організації вікон?

  9. Що використовують для побудови рухомих зображень?

  10. Для чого призначені графіки, гістограми?

  11. Який модуль включає засоби керування звуком?

  12. Які є стандартні процедури для керування частотою звука і його тривалістю?