Извлеките изоповерхности из объемных данных
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
. The 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
, что обеспечивает средство для наложения другого набора данных путем окрашивания полученной изоповерхности. The 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)