Графический объект исправления состоит из одного или нескольких полигонов, которые могут быть соединены или не соединены. Пластыри полезны для моделирования реальных объектов, таких как самолеты или автомобили, и для рисования 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-координаты как данные цвета, а затем рисует 2-D фрагмент. Например,
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-гранный многоугольник с желтой гранью, заключенной черным ребром. axis equal создает правильно пропорциональный многоугольник.
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')
Как данные исправления относятся к карте цветов, содержит дополнительные сведения о параметрах раскраски исправлений.