Главная

Категории:

ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника






Зміна властивостей побудованих графічних об’єктів за допомогою дескрипторної графіки


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

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

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

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

Ці засоби ефективно працюють з об’єктами, які мають складну структуру і легко розчеплюються на окремі елементи. Дуже складно структуризувати та підвести під ідеологію ООП складні фізичні та біологічні об’єкти, які утворюють одне ціле і мають складні неупорядковані зв’язки між окремими елементами. Легко піддаються структуризації геометричні об’єкти, електронні системи, інформаційні структури, комп’ютерні системи. Оскільки геометричні об’єкти серед перелічених є найбільш простими і легко піддаються структуризації, розглянемо простоту та ефективність використання ООП у MatLab саме на них. Через ООП та зміну властивостей об’єктів у MatLab реалізована дескрипторна графіка, засоби якої фахівці відносять до низькорівневих операцій. Основи дескрипторної графіки полягають у тому, що користувач працює не зіскладними структурами, як то графік або графічне вікно, азбазовими об’єктами, кожен зяких налаштовується потрібним чином зміною його властивостей. Глибоке вивчення дескрипторної графіки MatLab є вкрай важким завданням, оскільки налічується понад что окремих графічних об’єктів. Але при роботі з невеликою кількістю простих об’єктів дескрипторний метод є простим і зручним, навіть простішим, ніж високорівневі методи опрацювання графічних об’єктів. Наявність системи допомоги дає змогу вдосконалювати свої знання про властивості відомих графічних об’єктів та вивчити нові.Наведемо простий приклад дескрипторної графіки, в основі якого лежить функція plot. Важлива відмінність полягає у тому, що цій функції присвоюється значення змінної.

x=0:0.01*pi:3*pi;

y=sin(x);

c=plot(x,y);

grid on;

 

Поки подання графіка функції y=sin(x),отриманого з використанням наведеної системи команд, нічим не відрізняється від стандартного, графік будуть у декартовій системі координат тонкою блакитною лінією. Але важливим є те, що можна переглянути властивості отриманого графічного об’єкта та змінити їх. Перегляд властивостей здійснюють за допомогою команди get (c), де с — ім’я змінної, яка відповідає функції plot. Для розглянутого прикладку результат виконання команди буде таким:

Приклад

» get (c)

Color = [0 0 1]

EraseMode = normal

LineStyle = ?

LineWidth = [0.5]

Marker = none

MarkerSize = [6]

MarkerEdgeColor = auto

MarkerFaceColor = none

XData = [ (1 by 301) double array]

YData = [ (1 by 301) double array]

ZData = []

ButtonDownFcn =

Children = []

Clipping = on

CreateFcn =

DeleteFcn =

BusyAction = queue

HandleVisibility = on

HitTest = on

Interruptible = on

Parent = [73.0009]

Selected = off

SelectionHighlight = on

Tag =

Type = line

UIContextMenu = []

UserData = []

Visible = on

»

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

Color — цей параметр визначає колір лінії через вектор, який містить три компоненти: [r, g, b]. Компонент r відпові дає червоному, g — зеленому, b — синьoму кольору. За замовчуванням параметр має значення [0, 0, 1], тому початково лінії графіка кресляться синім кольором;

EraseMode — параметр визначає порядок зміни графіків за допомогою функції get. За замовчуванням EraseMode=‘normal’, цей параметр відповідає виведенню нового графіка відразу після зміни його параметрів. У разі використання значення EraseMode=‘none’ для зміни зображення необхідно використовувати функцію drawnow;

LineStyle — стиль лінії, який визначається текстовими константами.

LineWidth — товщина лінії у пунктах, за замовчуванням має значення 0,5;

Marker— визначення типу маркера відповідно до текстових констант, наведених у таблиці 3.6. За замовчуванням Marker =‘none’, тобто відсутній;

MarkerSize — розмір маркера, за замовчуванням Marker Size = 6.

Оскільки, як було зазначено у попередньому параграфі, маркери на теоретичних графіках використовуються рідко, найчастіше змінюються параметри лінії. Наприклад, установлюється чорний колір лінії, збільшується її товщина для більшого контрасту та виразності графіка. Простіше це робити тепер через дескрипторну графіку, адже визначена константа с, що формує массив даних, який описує властивості графіка, і необхідно тількі її змінити. Для цього не треба глибоких знань об’єктно орієнтованого програмування, як під час написання програм мовами С++, Object Pascal або Java. У MatLab зміна властивостей здійснюється дуже просто через команду set. Формат команди:

set(посилання на об’єкт через змінну, ‘параметр1’,значення1…)

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

set (c, ‘Color’, [0,0,0], ‘LineWidth’,3)

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

Оскільки англійська назва дескриптора — handle, досвідчені програмісти починають імена таких змінних з літери h, але цього правила дотримуватися не обов’язково. Параметру ‘Color’ надається значення [0, 0, 0], яке відповідає чорному кольору,а параметру ‘LineWidth’ надано значення 3. Після виконання цієї команди графік стає контрастним.

Розглянемо іншу можливість ефективного використання дескрипторної графіки — зміну типу та розміру шрифта під час виведення текстів. Такий спосіб не є ефективним, кращим є використання засобів програмування. Як було показано раніше, для нормального читання підписів на графіках треба застосовувати шрифти стандарту Unicode, наприклад, @Arial Unicode MS. Як змінити тип тарозмір шрифта засобами дескрипторної графіки, якщо ми не знаємо змінних, які відповідають за ці властивості? Стане у нагоді команда get, яку ми використовували у попередньому прикладі.

Приклад

»ht=title (‘Графік функції y(x)=sin(x)’);

»get (ht)

Color = [0 0 0]

EraseMode = normal

Editing = off

Extent = [?1.74194 1.0117 3.4424 0.0643275]

FontAngle = normal

FontName = Helvetica

FontSize = [10]

FontUnits = points

FontWeight = normal

HorizontalAlignment = center

Position = [?0.00692841 1.02053 17.3205]

Rotation = [0]

String = Графік функції y(x)=sin(x)

Units = data

Interpreter = tex

VerticalAlignment = bottom

ButtonDownFcn = scriberestoresavefcns

Children = []

Clipping = off

CreateFcn =

DeleteFcn =

BusyAction = queue

HandleVisibility = off

HitTest = on

Interruptible = on

Parent = [72.0009]

Selected = off

SelectionHighlight = on

Tag =

Type = text

UIContextMenu = []

UserData = []

Visible = on

 

Уважно прочитавши імена та значення всіх змінних, знайти серед них необхідні досить легко — це змінні

FontName =

Helvetica та FontSize = [10].

»set(ht,’FontName’,’@Arial

Unicode

MS’,

‘FontSize’,12);

 

Зробимо схожі підписи на осях графіка, відповідні команди повинні бути такими: Приклад

»ht2=xlabel (‘?’);

»set(ht2,’FontName’,’@Arial Unicode MS’, ‘Font?

Size’,12);

»ht3=ylabel (‘y(?)=sin(x)’);

»set(ht3,’FontName’,’@Arial Unicode MS’, ‘Font?- Size’,12);

 

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




Последнее изменение этой страницы: 2016-06-09

headinsider.info. Все права принадлежат авторам данных материалов.