Введение в объекты Patch

Что такое объекты Patch?

Графический объект закрашенной фигуры состоит из одного или нескольких полигонов, которые могут или не могут быть соединены. Закрашенные фигуры полезны для моделирования реальных объектов, таких как самолеты или автомобили, и для полигонов рисунка 2-или 3-D произвольной формы.

Напротив, объекты подложки являются прямоугольными сетками четырехугольников и лучше подходят для отображения плоских топографий, таких как значения математических функций двух переменных, контуров данных в прямоугольной плоскости или параметризованных поверхностей, таких как сферы.

Много функций MATLAB® создают объекты закрашенной фигуры — fill, fill3, isosurface, isocaps, некоторые функции contour, и patch. Этот раздел концентрируется на использовании функции patch.

Вы задаете закрашенную фигуру путем определения координат ее вершин и некоторой формы цветных данных. Закрашенные фигуры поддерживают разнообразие окраски опций, которые полезны для визуализации данных, наложенных на геометрические фигуры.

Существует два способа задать закрашенную фигуру:

  • Путем определения координат вершин каждого полигона, которые соединяются, чтобы сформировать закрашенную фигуру

  • Путем определения координат каждой уникальной вершины и матрицы, которая задает, как соединить эти вершины, чтобы сформировать поверхности

Второй метод предпочтен для многоаспектных закрашенных фигур, потому что он обычно требует, чтобы меньше данных задало закрашенную фигуру; вершины, совместно использованные больше чем одной поверхностью, должны быть заданными только однажды. Этот раздел обеспечивает примеры обоих методов.

Поведение Функции закрашенной фигуры

Существует две формы функции patch - высокоуровневый синтаксис и низкоуровневый синтаксис. Поведение функции patch отличается несколько, в зависимости от которого синтаксиса вы используете.

Высокоуровневый синтаксис

Когда вы используете высокоуровневый синтаксис, MATLAB автоматически определяет, как окрасить каждую поверхность на основе цветных данных, которые вы задаете. Высокоуровневый синтаксис позволяет вам не использовать имена свойства x-, y-, и z-координаты и цветные данные, пока вы задаете эти аргументы в правильном порядке.

patch(x-coordinates,y-coordinates,z-coordinates,colordata)

Однако необходимо задать цветные данные, таким образом, MATLAB может определить какой окраска, чтобы использовать. Если вы не задаете цветные данные, MATLAB возвращает ошибку.

x = [0 1 1 0];
y = [0 0 1 1];
patch(x,y)
Error using patch
Not enough input arguments.

Низкоуровневый синтаксис

Низкоуровневый синтаксис принимает только имя свойства / пары значения свойства в качестве аргументов и автоматически не окрашивает поверхности, если вы также не изменяете значение свойства FaceColor. Например, оператор

patch('XData',x,'YData',y) 

чертит закрашенную фигуру с черным цветом поверхности, потому что значение заводской настройки для свойства FaceColor является черным цветом.

get(groot,'FactoryPatchFaceColor')
ans =
      0     0     0

См. список Свойств исправления в Ссылке функции MATLAB и команде get для получения информации о том, как получить фабрику и пользовательские значения по умолчанию для свойств.

Интерпретация цветного аргумента

Когда вы используете высокоуровневый синтаксис, MATLAB интерпретирует третье (или четвертый, если существуют z-координаты), аргумент как цветные данные. Если вы намереваетесь задать закрашенную фигуру с x-, y-, и z-координаты, но не учесть цвет, MATLAB интерпретирует z-координаты как цветные данные, и затем чертит 2D закрашенную фигуру. Например,

patch(x,y,1:length(x))

чертит закрашенную фигуру со всеми вершинами в z = 0, окрашенный путем интерполяции цветов вершины (поскольку существует один цвет для каждой вершины), тогда как

patch(x,y,1:length(x),'y')

чертит закрашенную фигуру с вершинами при увеличении значений z, окрашенного в желтый.

То, как Данные о Закрашенной фигуре Относятся к Палитре, предоставляет больше информации об опциях для окраски закрашенных фигур.

Создание единственного полигона

Полигон является просто закрашенной фигурой с одной поверхностью. Чтобы создать полигон, задайте координаты вершин и цветных данных с оператором формы

patch(x-coordinates,y-coordinates,[z-coordinates],colordata)

Например, эти операторы отображают 10-сторонний полигон с желтой поверхностью, заключенной черным ребром. Команда equal axis производит правильно распределяемый полигон.

t = 0:pi/5:2*pi;
figure
patch(sin(t),cos(t),'y')
axis equal

Первые и последние вершины не должны совпадать; MATLAB автоматически закрывает каждую многоугольную поверхность закрашенной фигуры. На самом деле обычно лучше задать каждую вершину только однажды, особенно если вы используете интерполированную окраску поверхности.

Интерполированные цвета поверхности

Можно управлять многими аспектами окраски закрашенной фигуры. Например, вместо того, чтобы задать один цвет, предоставьте спектр численных значений, которые сопоставляют цвет в каждой вершине к цвету в палитре фигуры.

a = t(1:length(t)-1); %remove redundant vertex definition
figure
patch(sin(a),cos(a),1:length(a),'FaceColor','interp')
axis equal

MATLAB теперь интерполирует цвета через поверхность закрашенной фигуры. Можно окрасить ребра закрашенной фигуры тем же путем, установив цвета обводки быть интерполированными. Команда

patch(sin(a),cos(a),1:length(a),'EdgeColor','interp')

То, как Данные о Закрашенной фигуре Относятся к Палитре, предоставляет больше информации об опциях для окраски закрашенных фигур.