Извлеките изоповерхности из объемных данных
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)