Куб задан восемью вершинами та форма шесть сторон. Этот рисунок показывает x-, y-, и z-координаты вершин, задающих куб, в котором стороны являются одним модулем в длине.
Если вы задаете x-, y-, и аргументы z-координаты как векторы, они представляют как один полигон с точками, соединенными в последовательности. Если аргументы являются матрицами, MATLAB® чертит один полигон для каждого столбца, производя одну закрашенную фигуру с несколькими поверхностями. Эти поверхности не должны быть соединены и могут самопересекаться.
Также можно задать координаты каждой уникальной вершины и порядка, в котором можно соединить их, чтобы сформировать поверхности. Примеры в этом разделе иллюстрируют оба метода.
Каждая из шести поверхностей имеет четыре вершины. Поскольку вы не должны закрывать каждый полигон (т.е. первые и последние вершины не должны быть тем же самым), можно задать этот куб с помощью 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
.
То, как Данные о Закрашенной фигуре Относятся к Палитре, обсуждает окраску методов более подробно.