exponenta event banner

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

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

Синтаксис

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

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

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

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

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 команда, но нельзя передать отдельные грани и массивы вершин (f, vКому patch без указания имен свойств. Например,

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

или

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

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

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