Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Коссак графіка.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆

5.2.1. Визначення точки споглядання

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

Рис. 5.7. Кути споглядання

На рис. 5.7 розміщення спостерігача визначене двома кутами: азимутом (Azimuth) і кутом підвищення (Elevation). Азимут відраховують від осі, яка протилежна, а кут підвищення – від площини xy. Осі зафіксовані в додатному напрямі. Тут додатні напрями підрахунку кутів позначені стрілками.

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

>> [AZ, EL]=view

AZ =-37.5000

EL =30

Ці значення MatLab використовує за замовчуванням у разі побудови тривимірних графіків. Для задання положення спостерігача потрібно ввести азимут і кут підвищення (у градусах) як вхідні аргументіи view, наприклад: view(0,90) відображає вигляд на графік зверху. Функція view забезпечує ще декілька варіантів виклику:

  • view(3) – повернення до стандартних налаштувань;

  • view([x,y,z]) – розташування спостерігача в точці з координатами x,y,z.

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

  • для 2D – view(2), az = 0, el = 90;

  • для 3D – view(3), az = -37.5, el = 30.

5.2.2. Об'єкти дескрипторної графіки

Як відомо, графічні засоби MATLAB грунтуються на низькорівневій графіці, яку називають дескрипторною (описовою). Вона забезпечує об’єктно - орієнтоване програмування графічних команд та інтерфейсу користувача, дає нові можливості створення графічних програм MATLAB, а також допомагає зрозуміти, як реалізовані графічні засоби системи. Центральним поняттям дескрипторної графіки є графічний об’єкт. Розглянемо такі типи об'єктів:

  • root – первинний об’єкт, який відповідає екрану комп’ютера;

  • figure – об’єкт створення графічного вікна;

  • uicontrol – об’єкт створення елемента інтерфейсу;

  • axes – об’єкт, який задає область розташування графіка в вікні об’єкта figure;

  • uimenu – об’єкт створення меню;

  • uicontextmenu – об’єкт створення контекстного меню;

  • image– об’єкт створення растрової графіки;

  • line– об’єкт створення лінії;

  • patch – об’єкт створення заповнених фігур;

  • rectangle – об’єкт створення заповнених прямокутників;

  • surface – об’єкт створення поверхні;

  • text– об’єкт створення текстових підписів;

  • light – об’єкт створення ефектів освітленості.

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

Створення графічного вікна. Всі високорівневі команди і функції, які виводять графічні об’єкти автоматично утворюють графічний об’єкт Figure. Наведемо команди і функції, які призначені для створення графічних вікон і керування ними:

  • figure – відкрити чисте графічне вікно;

  • gcf – отримати дескриптор графічного вікна figure;

  • elf – очистити графічне вікно;

  • shg – показати попередньо звернен графічне вікно;

  • close – закрити графічне вікно;

  • refresh – обновити графічне вікно.

Сстворення координатних осей. Графічний об’єкт axis задає область розміщення графіка у вікні об’єкта figure. Всі команди і функції, які виводять графіки автоматично створюють графічний об’єкт axis. Якщо в одному графічному вікні створено декілька об’єктів axis, то один з них виокремлюється як графічний об’єкт. Розглянемо ще одну групу команд для створення координатних осей і керування ними:

  • axes – створити осі координат;

  • box – побудувати прямокутник наввколо рисунка;

  • сlа – вилучити побудову axes;

  • gса – отримати дескриптор графічного об’єкта axes;

  • hold – зберегти осі координат;

  • ishold – перевірка статусу hold (1, якщо осі збережені, і 0 в іншому випадку).

Зазначимо, що ці команди можна використовувати і в високорівневій графіці.

Побудова ліній. Для ілюстрації команди line побудуємо ламану лінію, яка проходить через три точки з координатами (0,1), (2,4) і (5,-1). Використаємо об’єкт line:

» line([0 2 5],[1 4 -1],'Color','blue')

Особливість команди line полягає в явному заданні всіх умов побудови графіка: координат конкретних точок, параметра кольору 'Color' і самого кольору 'blue' (синій). Результатом цієї команди є два відрізки прямої синього кольору, які проходять через задані точки, відрізки.

Команда Patch. Наступною командою для побудови графічних об’єктів є команда patch. Ця команда створює один або більше багатокутників, зафіксованих у вершинах. Команда особливо потрібна під час роботи з 3D графікою і може набувати таких форм:

  • patch(X,Y,C) – створює заповнений багатокутник, вершини якого задані векторами і біжучій системі координат, а специфікація заповнення – вектором кольорової палітри С. Можна також задавати колір за допомогою символьної змінної 'color' вигляду 'r', 'g', 'b', 'с', 'm', 'у', w, k, тут V, X і Y можуть бути матрицями;

  • patch(X,Y.Z,C) – створює багатокутник у тривимірній системі координат, у цьому разі матриця Z повинна мати той же розмір, що й X і Y.

Розглянемо найпростіший шлях використання команди patch. Нехай нам потрібно нарисувати трикутник, заповнений синім кольором, з вершинами: (0,0), (1,0) і (0.5,1).

patch ( [0 1 0.5] , [0 0 1] , [0 0 1] ):

тут перший вектор – х-координати вершин, другий – у-координати а третій визначає зафарбування поверхні об’єкта. Для задання кольору треба конкретно визначати відповідний коефіцієнт кольору ([rgb]) (red, green, blue).

Розглянемо ще один приклад використання команди patch:

» Х=[1 2 3 2 1];

» Y=[l 2 0 5 1];

» patch(X.Y.[l 0 0])

У цьому випадку багатокутник зафарбований червоним кольором, оскільки вектор кольорів [1 0 0] визначає наявність лише червоного кольру. Так само можна працювати і в тривимірному просторі, потрібно лише додати дані про z–координату.