Similar presentations:
Трехмерная графика в Matlab
1. Трехмерная графика в Matlab
2.
23. Построение 3D-поверхности
• Рассмотрим пример:построить поверхность f(x,y)=sin(r)/r, где
2
2
r=sqrt(x +y )
3
4.
• Функция meshgrid возвращает две матрицы – X и Y –которые определяют область построения функции
• Собственно поверхность выводится функцией surfl
4
5. Функция meshgrid
Функция meshgrid служит для созданиямассивов данных для трехмерной графики.
5
6. Функция meshgrid записывается в следующих формах:
• [X,Y] = meshgrid(x)аналогична [X,Y] = meshgrid(x,x)
возвращает трехмерные массивы
• [X,Y] = meshgrid(x,y)
преобразует область, заданную
векторами х и у, в массивы X и Y
6
7.
Пример:[X,Y] = meshgrid(1:3,13:17)
X=
1
1
1
1
1
2
2
2
2
2
3
3
3
3
3
Y=
13
14
15
16
17
13
14
15
16
17
13
14
15
16
17
7
8. Функции для построения поверхностей
Функцияmesh, surf
Для чего используется
Построение поверхностей
meshc, surfc Строит поверхность и контурную диаграмму под ней
meshz
Поверхность на «пьедестале»
surfl
Подсвеченная поверхность
contour
Контурная диаграмма
plot3
Трёхмерная линия (параметрическое задание)
comet3
Движение по трёхмерной линии
8
9.
Трехмерная графика.Для построения простых трехмерных графиков в MATLAB используется
функция plot3(), которая отличается от plot() только количеством
получаемых параметров.
Пример.
>> t=0:pi/50:10*pi;
x=sin(t);
y=cos(t);
plot3(x,y,t);
grid on
10. Команда plot3
plot3(X,Y,Z) – строит поверхность в виде линий,получаемых
в
сечении
поверхности
плоскостями, параллельными плоскости yOz.
X, Y и Z – это матрицы: X,Y – задают узлы
сетки, а матрица Z – значения по оси z в этих
узлах.
10
11. Пример построения командой plot3
[X,Y]=meshgrid([-3:0.15:3]);Z=X.^2 + Y.^2;
plot3(X,Y,Z);
11
12.
plot3 (X, Y, Z, S) — обеспечивает построения сучетом спецификации стиля линий и точек S,
соответствующей спецификации команды
plot.
plot3 может строить на одном рисунке графики
нескольких функций z1(x1,y1), z2(x2, y2) и т. д.
со спецификацией линий и маркеров каждой из
них.
plot3(x1,y1,z1,s1, х2,у2,z2,s2, хЗ,уЗ,z3,s3,...)
12
13.
Стиль линий и точек команд plot и plot3цвет
b синий
g зеленый
r красный
c циан
m фиолетовый
y желтый
k черный
w белый
стиль точек
стиль линий
. точка
- сплошная
o кружок
: пунктирная
x x-крестик
-. штрихпунктирная
+ плюс
-- штрихами
* звездочка
(none) без линий
s квадрат
d кристалл
v треугольник (вниз)
^ треугольник (вверх)
< треугольник (влево)
> треугольник (вправо)
p пятиугольник
h шестиугольник
13
14. График поверхности, построенный кружками
[X,Y]=meshgrid([-3:0.15:3]);Z=X.^2 + Y.^2;
plot3(X,Y,Z,’o’);
14
15.
[X,Y]=meshgrid([-3:0.15:3]);Z=X.^2+Y.^2;
plot3(X,Y,Z,'-r',Y,X,Z,'-b')
В данном случае строятся два графика одной и той же функции с
взаимно перпендикулярными образующими линиями.
15
16. Сетчатые 3D-графики с окраской
Наиболеепредставительными
и
наглядными
являются
сетчатые
графики поверхностей с заданной или
функциональной окраской. В названии
их команд присутствует слово mesh.
16
17. Команды mesh
• mesh – выводит в графическое окносетчатую поверхность;
• meshc — помимо графика поверхности
дает изображение ее проекции;
• meshz — строит поверхность в виде
столбиков.
17
18.
[X,Y]=meshgrid([-3:0.15:3]);Z=X.^2+Y.^2;
mesh(X,Y,Z);
Функциональная окраска линий поверхности заметно усиливает
наглядность ее представления.
18
19. Оформление графика поверхности
Для удаления с поверхности линий, изображающих ребра, а также полученияплавного перехода цветов на освещенной поверхности, используется
команда
shading interp
Для получения информации о всех свойствах графического объекта,
создаваемого функцией mesh, используется команда get:
19
20. Пример использования команды shading interp.
[X,Y]=meshgrid([-3:0.15:3]);Z=X.^2 + Y.^2;
meshc(X,Y,Z);
21
21.
Построение поверхностистолбцами
Использование суффикса z приводит к
построению «графика с пьедесталом».
Поверхность
строится
из
многочисленных столбцов:
meshz(...)
22
22. Построение поверхности столбцами
[X,Y]=meshgrid([-3:0.15:3]);Z=X.^2 + Y.^2;
meshz(X,Y,Z);
23
23.
Дополнительные детали оформления 3D графиковДля оформления трехмерных графиков можно
использовать те же функции, что использовались при
оформлении двумерных графиков функций,
рассмотренных ранее, такие как:
axis([ xmin, xmax, ymin, ymax, zmin, zmax ]), text, xlabel,
ylabel, zlabel, title.
С помощью функции subplot можно разместить в одном
графическом окне несколько трехмерных графиков.
24.
Построение поверхности сокраской
Для построения поверхностей в виде
сетчатых
графиков,
использующих
функциональную
закраску
ячеек
используются команды класса surf(…).
25
25. Построение поверхности с окраской
Команды surf• surf — строит цветную параметрическую
поверхность;
• surfc – обеспечивает дополнительное
построение контурного графика проекции
фигуры на опорную плоскость;
• surfl – строит график цветной поверхности
с подсветкой от источника света;
26
26. Команды surf
[X,Y]=meshgrid([-3:0.1:3]);Z=sin(X)./(X.^2+Y.^2+0.3);
surf(X,Y,Z);
shading interp;
colorbar;
В этом примере команда shading Interp обеспечивает устранение
изображения сетки и задает интерполяцию для оттенков цвета объемной
поверхности, а команда colorbar выводит шкалу цветовых оттенков.
27
27.
Дляповышения
наглядности
представления поверхностей можно
использовать дополнительный график
линий равного уровня, получаемый
путем проецирования поверхности на
опорную плоскость графика (под
поверхностью). Для этого используется
команда surfс:
28
28.
[X,Y]=meshgrid([-3:0.1:3]);Z=sin(X)./(X.^2+Y.^2+0.3);
surfc(X,Y,Z);
29
29.
Контурные графики[X,Y]=meshgrid([-1:0.05:1]);
Z=X.^2+Y.^2;
levels=[0:0.1:0.5];
contour3(X,Y,Z,levels)
colorbar
Параметр levels
• может отсутствовать,тогда
число линий уровня
выбирается автоматически
• является просто значением
• является вектором значений
30
30. Контурные графики
[X,Y]=meshgrid([-1:0.05:1]);
Z=X.^2+Y.^2;
levels=[0:0.01:0.5];
contour3(X,Y,Z,levels)
colorbar
31
31. Контурные графики
contour3(peaks,20);32
32.
Контурные графики• Разновидность
контурного
графика contour(X,Y,Z)
• На плоскости xoy строятся
линии уровня. Сам график
поверхности не строится.
• В функции может стоять и 4ый
параметр,
который
указывает
число
линий
уровня.
• Для нанесения разметок на
линии уровня используется
clabel(CMatr,h)
• Cmatr
–
матрица,
содержащая информацию о
линиях уровня
• h – указатель на график, на
который следует нанести
разметку
33
33. Контурные графики
contour[X,Y]=meshgrid([-1:0.05:1]);
Z=X.^2+Y.^2;
[M,h]=contour(X,Y,Z);
clabel(M,h)
34
34. contour
Цветные объемные круговыедиаграммы
Для построения объемных круговых диаграмм
служит команда pie3:
x = [1 2.2 0.8 2.5 2];
pie3(x, [0 0 0 1 1])
35
35. Цветные объемные круговые диаграммы
MATLAB имеет несколько графическихфункций, возвращающих матричный
образ поверхностей
peaks – поверхность с рядом пиков и впадин
cylinder – цилиндрическая поверхность
ellipsoid – поверхность элипсоида
sphere – сферическая поверхность
36
36. MATLAB имеет несколько графических функций, возвращающих матричный образ поверхностей
[X1,Y1,Z1]=cylinder(10,30);[X2,Y2,Z2]=sphere(30);
[X3,Y3,Z3]=ellipsoid(0,0,0,3.9,3.9,2.25,30);
subplot(2,2,1),surf(peaks);
subplot(2,2,2),surf(X1,Y1,Z1,X1);
subplot(2,2,3),surf(X2,Y2,Z2,X2);
subplot(2,2,4),surf(X3,Y3,Z3,X3);
37
37.
Вывод графиков в отдельные окнаfigure– окно становится
текущим
clf– очистка всего текущего
окна
cla – очистить оси, заголовки
и названия осей
In=figure
Создание
указателя на графическое
окно
figure(In)
–
переход
к
нужному окну
clf(In) – очистка нужного окна
cla(In)
38
38. Вывод графиков в отдельные окна
.Сохранение графических изображений
Для сохранения графического изображения в файл необходимо выполнить в
графическом окне команду меню File|Save или File|Save as. После чего на
экране появится стандартный диалог сохранения.
Дальше необходимо вести имя
файла и выбрать расширение (тип
графического файла).
По умолчанию MATLAB предлагает
сохранить изображение в свой
формат
*.fig,
в
который
сохраняется не изображение, а
информация необходимая для его
построения.
Графическое изображение можно
сохранить в формате bmp