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

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

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

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

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

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

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

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

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

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

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

Существует две формы patch function - синтаксис высокого уровня и синтаксис низкого уровня. Поведение 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 Data соотносится с Палитрой предоставляет дополнительные сведения об опциях для окрашивания закрашенных фигур.

Создание единого многоугольника

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

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')

Как Patch Data соотносится с Палитрой предоставляет дополнительные сведения об опциях для окрашивания закрашенных фигур.