Извлеките данные об изоповерхности из данных об объеме
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
.
fv
struct
содержит поверхности и вершины изоповерхности, которую можно передать непосредственно команде 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
включает, вы, чтобы управлять цветным отображением изоповерхности с данными, отличающимися от этого раньше, вычисляли изоповерхность (например, температурные данные, наложенные на ветер текущая изоповерхность).
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)