3.3 Тривимірні графіки
Найуживанішими функціями пакета МАТLАВ, що вживаються для створення тривимірних графіків є:
plot3 - побудова графіка в тривимірній системі координат
mesh - побудова сітки на поверхні графіка
surf - побудова поверхні графіка
contour3 - побудова контурів поверхні графіка
Оскільки положення кожної точки у просторі задається трьома координатами, набір точок, що належить деякій лінії у просторі задається у вигляді трьох векторів, які вміщують координати точок по відповідним координатним висям. Імена даних векторів указуються у списку формальних параметрів функцій для побудови графіків.
Розглянемо докладніше процес створення тривимірної поверхні . Нехай у точці з координатами x1,y1 обчислюється значення функції z=f(x,y)і воно дорівнює z1.У іншій точці x2,y2 обчислюють значення функції z2.Продовжуючи цей процес, отримують масив точок (x1,y1,z1), (x2,y2,z2),… (xM,yM,zM)тривимірного простору. Найчастіше для такого обчислення аргументів використовують розбиття у вигляді прямокутної сітки. Задля опису даної сітки у МАТLАВ створюють дві матриці, наприклад, X,Y.Кількість стрічок даних матриць дорівнює кількості вузлів розбиття відрізку (вектору) [ymin ,ymax], а кількість стовпчиків – кількості вузлів розбиття відрізку [xmin , xmax]. Для формування даних матриць використовується функція meshgrid , яка має такий синтаксис:
[X Y]= meshgrid (x,y),
де x,y – вектори, що вміщують вузли сітки згідно висей Ox та Oy,відповідно. Далі у кожному вузлі прямокутної сітки (k,m) обчислюються значення функції z=f(x,y)та зберігаються у матриціZ.
Приклад 2.
Побудуємо поверхню , що задається функцією f(x,y)=exp(-x2-y2) різними засобами ( з використанням різних функції для їхньої побудови ).
% задаємо координати вузлів сітки
>>x=-2:0.1:2;
>>y=-1:0.1:1;
>>[X Y]= meshgrid (x,y);% створюємо матриці,що містять у собі
% координати вузлів сітки
>>Z=exp(-X.^2-Y.^2);
>>plot3(X,Y,Z);% будуємо першим засобом ( рис. )
>>figure
>>hS1=mesh(X,Y,Z);% будуємо другим засобом (рис. )
>>figure
>>surf(X,Y,Z);% будуємо третім засобом ( рис. )
>>figure
>>surfl(X,Y,Z);% будуємо четвертим засобом ( рис. )
Останні три функції дають більш реалістичне зображення, чим функція plot3, фарбуючи ребра різними кольорами та убираючи ті лінії, що знаходяться позаду. Якщо потрібно все ж таки побачити ці задні ребра, слід виконати команду hidden off ( знов виключити цей режим - hidden on ).Якщо ви хочете ще покращити зображення поверхні, можна убрати темні лінії, що відображують ребра, тобто зробити плавний перехід кольорів за допомогою команди shading interp.Можна трактувати поверхню як матеріальну з деякими фізичними властивостями по відображенню світла, або задати різні відтінки однієї світової гами – тоді використайте функцію colormap( copper),де у дужках заданий матеріал «мідь» зі своїми особливостями відбивання світла або colormap( gray) – тоді увесь
Рисунок буде у сірій гамі. Можливостей у пакеті дуже багато. Для оформлення графіку у випадку 3D, як і у двовимірному випадку, можна використати функції axis, text, xlabel, ylabel, zlabel, title задля тих же цілей.
Слід відмітити, що мова MATLAB як візуальна працює з об’єктами(у даному випадку графічними), тобто дозволяє отримати інформацію про їхні властивості - за допомогою команди get .Навпаки, можна напрямки задати якусь з них командою set .Так, у прикладі 2 спеціально заданий об’єкт mesh з ім’ям hS1.Щоб отримати дані про всі його властивості потрібно виконати команду get(hS1), тільки подивитись тип об’єкту - команду get(hS1,’Type’).Щоб встановити властивість плавного переходу кольорів - команду set (hS1,’FaceColor’,’interp’).
Основні довідкові дані про роботу з тривимірною графікою можна отримати за допомогою команди help graph3d.
Для тривимірних графіків існує також можливість змінювати властивості умовної камери, що фіксує сцену з графіком: можна змінювати положення цієї камери, відстань від сцени, а також властивості її об’єктива.
Це є потужним засобом впливати на деталі відображення. Робити все це можна декількома засобами, але найпростішим є метод зміни точки огляду (viewpoint). У цьому разі , правда, змінюються тільки кути, що задають орієнтацію цієї точки у просторі : кут азимуту (az) та кут підвищення (el). Зміна першого означає обертання площини xOy навкруги вісіOz проти годинної стрілки. Кут підвищення el- це кут між напрямком на точку огляду та площиною xOy.За замовченням для функцій mesh,surf,surfl встановлені значення az=-37,5’, el=30’.Ці значення у будь-який час можна змінювати за допомогою спеціальної функції view([az,el]).Змініть ці значення на, наприклад такі: view([-15,20]), або інші.
Для збереження графічного зображення необхідно виконати у графічному вікні команду меню FileSave або FileSave as.Після цього у стандартному вікні, що з’явиться, слід вказати ім’я файлу та вибрати розширення fig , яке MATLAB пропонує за замовченням. Графічна інформація буде збережена у двійковому файлі того ж формату, що розглянутий раніше mat-файл. Для зчитування раніше збереженого файлу з графічним зображенням слід виконати команду FileOpen.Для експорту файлу у інші графічні формати слід виконати команду FileSave as та потім у вікні вказати вибраний формат ті ім’я файлу.