isosurface

Извлеките данные об изоповерхности из данных об объеме

Синтаксис

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. Таким образом, изоповерхность соединяет точки, которые имеют заданное значение очень способ, которым линии контура соединяют точки равного вертикального изменения.

Массивы XY, и Z представляйте Декартову, выровненную осью сетку. V содержит соответствующие значения в этих узлах решетки. Координатные массивы (XY, и Z) должно быть монотонным и соответствовать формату, произведенному meshgridV должен быть 3D массив объема одного размера с XY, и Z.

struct fv содержит поверхности и вершины изоповерхности, которую можно передать непосредственно patch команда.

fv = isosurface(V,isovalue) принимает массивы XY, и 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

Figure contains an axes. The axes contains an object of type patch.

Выбирание цветов изоповерхности

Визуализируйте данные о потоке, но нанесите цветную маркировку на поверхность, чтобы указать на величину вдоль оси 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

Figure contains an axes. The axes contains an object of type patch.

Советы

Можно передать fv структура, созданная isosurface непосредственно к patch команда, но вы не можете передать отдельные поверхности и массивы вершин (fV) к patch не задавая имена свойства. Например,

patch(isosurface(X,Y,Z,V,isovalue))

или

[f,v] = isosurface(X,Y,Z,V,isovalue);
patch('Faces',f,'Vertices',v)

Расширенные возможности

Представлено до R2006a