Многоаспектные закрашенные фигуры

Пример - определение куба

Куб задан восемью вершинами та форма шесть сторон. Этот рисунок показывает x-, y-, и z-координаты вершин, задающих куб, в котором стороны являются одним модулем в длине.

Если вы задаете x-, y-, и аргументы z-координаты как векторы, они представляют как один полигон с точками, соединенными в последовательности. Если аргументы являются матрицами, MATLAB® чертит один полигон для каждого столбца, производя одну закрашенную фигуру с несколькими поверхностями. Эти поверхности не должны быть соединены и могут самопересекаться.

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

Задавая X, Y, и координаты Z

Каждая из шести поверхностей имеет четыре вершины. Поскольку вы не должны закрывать каждый полигон (т.е. первые и последние вершины не должны быть тем же самым), можно задать этот куб с помощью 4 6 матрица для каждого из x-, y-, и z-координаты.

Каждый столбец матриц задает различную поверхность. В то время как существует только восемь вершин, необходимо задать 24 вершины, чтобы задать все шесть поверхностей. Поскольку каждая поверхность совместно использует вершины с четырьмя другими поверхностями, можно задать закрашенную фигуру более эффективно путем определения каждой вершины только однажды и затем определения порядка, в котором можно соединить эти вершины, чтобы сформировать каждую поверхность. Свойства Vertices и Faces закрашенной фигуры задают закрашенные фигуры только этим способом.

Определение поверхностей и вершин

Эти матрицы задают куб с помощью Vertices и Faces.

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

patch('Vertices',vertex_matrix,'Faces',faces_matrix)

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

Плоский цвет поверхности

Плоский цвет поверхности является результатом определения одного цвета на поверхность. Например, с помощью метода вершин/поверхностей и свойства FaceVertexCData задать цвет, этот оператор задает один цвет на поверхность и устанавливает свойство FaceColor на flat.

vert = [0 0 0;1 0 0;1 1 0;0 1 0;0 0 1;1 0 1;1 1 1;0 1 1];
fac = [1 2 6 5;2 3 7 6;3 4 8 7;4 1 5 8;1 2 3 4;5 6 7 8];
patch('Vertices',vert,'Faces',fac,...
      'FaceVertexCData',hsv(6),'FaceColor','flat')

Настройте оси:

view(3)
axis vis3d

Поскольку истинный цвет, заданный со свойством FaceVertexCData, имеет тот же формат как палитра MATLAB (т.е. n-3 массив значений RGB), этот пример использует палитру hsv, чтобы сгенерировать шесть цветов, требуемых для закрашивания плоскостями.

Чтобы сопоставить цвета поверхности с текущей палитрой, присвойте n-1 массив свойству FaceVertexCData:

patch('Vertices',vert,'Faces',fac,...
      'FaceVertexCData',(1:6)','FaceColor','flat')

Настройте оси:

view(3)
axis vis3d

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

Интерполированный цвет поверхности означает, что цвета вершины каждой поверхности задают переход цвета от одной вершины до следующего. Чтобы интерполировать цвета между вершинами, необходимо задать цвет для каждой вершины и установить свойство FaceColor на interp.

patch('Vertices',vert,'Faces',fac,...
      'FaceVertexCData',hsv(8),'FaceColor','interp')

Настройте оси:

view(3)
axis vis3d

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

Чтобы задать ту же окраску с помощью x, y, z, c метод, c должен быть m n 3 массивами, где размерности x, y, и z являются m на n.

Эта схема показывает соответствие между свойствами FaceVertexCData и CData.

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

Для просмотра документации необходимо авторизоваться на сайте