Извлеките данные об изоповерхности из данных об объеме
fv = isosurface(X,Y,Z,V,isovalue)
fv = isosurface(V,isovalue)
fvc = isosurface(...,colors)
fv = isosurface(...,'noshare')
fv = isosurface(...,'verbose')
[f,v] = isosurface(...)
[f,v,c] = isosurface(...)
isosurface(...)
fv = isosurface(X,Y,Z,V,isovalue)
вычисляет данные об изоповерхности из данных об объеме V
в значении изоповерхности, заданном в isovalue
. Таким образом, изоповерхность соединяет точки, которые имеют заданное значение очень способ, которым линии контура соединяют точки равного вертикального изменения.
Массивы X
Y
, и Z
представляйте Декартову, выровненную осью сетку. V
содержит соответствующие значения в этих узлах решетки. Координатные массивы (X
Y
, и Z
) должно быть монотонным и соответствовать формату, произведенному meshgrid
V
должен быть 3D массив объема одного размера с X
Y
, и Z
.
struct
fv
содержит поверхности и вершины изоповерхности, которую можно передать непосредственно patch
команда.
fv = isosurface(V,isovalue)
принимает массивы X
Y
, и Z
заданы как [X,Y,Z] = meshgrid(1:n,1:m,1:p)
где [m,n,p] = size(V)
.
fvc = isosurface(...,colors)
интерполирует массив colors
на скалярное поле и возвращает интерполированные значения в facevertexcdata
поле fvc
структура. Размер colors
массив должен совпасть с V
. colors
аргумент включает, вы, чтобы управлять цветным отображением изоповерхности с данными, отличающимися от этого раньше, вычисляли изоповерхность (e.g., температурные данные, наложенные на ветер текущая изоповерхность).
fv = isosurface(...,'noshare')
не создает совместно использованные вершины. Это быстрее, но производит больший набор вершин.
fv = isosurface(...,'verbose')
сообщения о ходе выполнения печати к командному окну как расчет прогрессируют.
[f,v] = isosurface(...)
или [f,v,c] = isosurface(...)
возвращает поверхности и вершины (и faceVertexcCData
) в отдельных массивах вместо struct.
isosurface(...)
без выходных аргументов, создает закрашенную фигуру в текущей системе координат с вычисленными поверхностями и вершинами. Если никакая текущая система координат не существует, новые оси создаются с 3-D представлением.
Если нет никакой текущей системы координат, и вы вызываете isosurface
не присваивая выходные аргументы, MATLAB® создает новые оси, устанавливает его на 3-D представление и добавляет подсветку в график изоповерхности.
Загрузите набор данных потока, который представляет профиль скорости затопленной струи в бесконечном баке. Чертите изоповерхность в значении данных -3
и подготовьте изоповерхность к подсветке:
Перевычисление нормалей изоповерхности на основе данных об объеме.
Борясь и цвет обводки.
Определение представления.
Добавление световых сигналов.
[x,y,z,v] = flow; p = patch(isosurface(x,y,z,v,-3)); isonormals(x,y,z,v,p) p.FaceColor = 'red'; p.EdgeColor = 'none'; daspect([1 1 1]) view(3); axis tight camlight lighting gouraud
Визуализируйте данные о потоке, но нанесите цветную маркировку на поверхность, чтобы указать на величину вдоль оси X. Используйте шестой аргумент для isosurface
, который обеспечивает средние значения, чтобы наложить другой набор данных путем окраски получившейся изоповерхности. colors
переменная является вектором, содержащим скалярное значение для каждой вершины в изоповерхности, чтобы быть изображенной с картой текущего цвета. В этом случае это - одна из переменных, которые задают поверхность, но это могло быть совершенно независимо. Можно применить различную цветовую схему путем изменения карты цветов текущей фигуры.
[x,y,z,v] = flow; [faces,verts,colors] = isosurface(x,y,z,v,-3,x); patch('Vertices',verts,'Faces',faces,'FaceVertexCData',colors,... 'FaceColor','interp','EdgeColor','interp') view(30,-15) axis vis3d colormap copper
Можно передать fv
структура, созданная isosurface
непосредственно к patch
команда, но вы не можете передать отдельные поверхности и массивы вершин (f
V
) к patch
не задавая имена свойства. Например,
patch(isosurface(X,Y,Z,V,isovalue))
или
[f,v] = isosurface(X,Y,Z,V,isovalue); patch('Faces',f,'Vertices',v)