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

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

Синтаксис

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)

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

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