изоповерхность

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

Синтаксис

fv = изоповерхность (X, Y, Z, V, изозначение)
fv = изоповерхность (V, изозначение)
fvc = изоповерхность (..., цвета)
fv = изоповерхность (..., 'noshare')
fv = изоповерхность (..., 'многословный')
[f, v] = изоповерхность (...)
[f, v, c] = изоповерхность (...)
изоповерхность...)

Описание

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

fv = isosurface(...,'noshare') не создает совместно использованные вершины. Это быстрее, но производит больший набор вершин.

fv = isosurface(...,'verbose') распечатывает сообщения о ходе выполнения к командному окну, в то время как вычисление прогрессирует.

[f,v] = isosurface(...) или [f,v,c] = isosurface(...) возвращают поверхности и вершины (и faceVertexcCData) в отдельных массивах вместо struct.

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

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

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

Была ли эта тема полезной?