isosurface

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

Описание

Изоповерхность является 3-D поверхностным представлением точек с равными значениями в 3-D распределении данных. isosurface функция вычисляет и чертит поверхность соединительными точками постоянного значения в объеме пробела.

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

пример

isosurface(X,Y,Z,V,isovalue) определяет, где данные об объеме V равны заданному isovalue и строит isosurface в текущую систему координат.

Вычислите данные об изоповерхности как структуру

пример

s = isosurface(X,Y,Z,V,isovalue) определяет, где данные об объеме V равны заданному isovalue и возвращает поверхности и данные о вершинах для получившейся поверхности в структуре.

s = isosurface(X,Y,Z,V) выбирает изозначение при помощи гистограммы данных.

s = isosurface(V,isovalue) использование XY, и Z координаты на основе размера V. Координаты в каждой размерности запускаются в 1 и формируют m-n--p сетка, где [m,n,p] = size(V).

s = isosurface(V) выбирает изозначение при помощи гистограммы данных.

s = isosurface(___,colors) интерполирует цвета массивов на скалярное поле и хранит данные в facevertexcdata поле структуры.

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

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

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

[faces,verts] = isosurface(___) возвращает поверхности и вершины в отдельных массивах.

пример

[faces,verts,colors] = isosurface(___) возвращает поверхности, вершины и цветные данные в отдельных массивах.

Примеры

свернуть все

Создайте 3-D декартовы координаты при помощи meshgrid и создайте данные об объеме V. Затем создайте изоповерхность в объеме соединительными точками в значении.0001. Постройте изоповерхность.

[x,y,z] = meshgrid([-3:0.25:3]); 
V = x.*exp(-x.^2 -y.^2 -z.^2);
isosurface(x,y,z,V,1e-4);

Figure contains an axes object. The axes object contains an object of type patch.

Создайте изоповерхность, где изозначение 0.0001. Возвратите местоположения поверхностей и вершин для получившейся поверхности в структуре.

[x,y,z] = meshgrid([-3:0.25:3]); 
V = x.*exp(-x.^2 -y.^2 -z.^2);
s = isosurface(x,y,z,V,1e-4)
s = struct with fields:
    vertices: [1693x3 double]
       faces: [3348x3 double]

Создайте изоповерхность, где изозначение.0001. Возвратите местоположения поверхностей и вершин для получившейся поверхности как отдельные массивы.

[x,y,z] = meshgrid([-3:0.25:3]); 
V = x.*exp(-x.^2 -y.^2 -z.^2);
[faces,verts] = isosurface(x,y,z,V,1e-4)
faces = 3348×3

     1     2     3
     1     4     2
     2     4     5
     4     6     5
     5     6     7
     6     8     7
     9    10    11
     9    12    10
    10    12    13
    12    14    13
      ⋮

verts = 1693×3

    0.2500   -0.2500   -2.7918
    0.2181   -0.2500   -2.7500
    0.2500   -0.4366   -2.7500
    0.2500         0   -2.8092
    0.2049         0   -2.7500
    0.2500    0.2500   -2.7918
    0.2181    0.2500   -2.7500
    0.2500    0.4366   -2.7500
    0.5000   -0.7500   -2.7935
    0.4165   -0.7500   -2.7500
      ⋮

Создайте изоповерхность, где изозначение 0.0001. Вычислите местоположения поверхностей и вершин как структура. Затем постройте поверхность и данные о вершине путем передачи данных о структуре patch функция. Настройте представление графика, измените поверхностные цвета и задайте пользовательскую подсветку.

[x,y,z] = meshgrid([-3:0.25:3]); 
V = x.*exp(-x.^2 -y.^2 -z.^2);
s = isosurface(x,y,z,V,1e-4);
p = patch(s);
isonormals(x,y,z,V,p)
view(3);
set(p,'FaceColor',[0.5 1 0.5]);  
set(p,'EdgeColor','none');
camlight;
lighting gouraud;

Figure contains an axes object. The axes object contains an object of type patch.

Визуализируйте данные о потоке, но цветовой код поверхность, чтобы указать на величину вдоль оси X. Во-первых, вычислите цветные данные путем определения вектора, содержащего скалярное значение для каждой вершины в изоповерхности. Цвета сопоставлены с текущей палитрой.

[x,y,z] = meshgrid([-3:0.25:3]); 
V = x.*exp(-x.^2 -y.^2 -z.^2);
[faces,verts,colors] = isosurface(x,y,z,V,1e-4,x);

Затем постройте изоповерхность с вычисленными цветными данными путем передачи данных функции закрашенной фигуры. Установите угол камеры и соотношение сторон и измените палитру.

patch('Vertices',verts,'Faces',faces,'FaceVertexCData',colors,...
    'FaceColor','interp','EdgeColor','interp')
view(3) 
colormap copper

Figure contains an axes object. The axes object contains an object of type patch.

Входные параметры

свернуть все

Ось x координирует данные в виде вектора или трехмерного массива тот же размер как V. Если вы задаете трехмерный массив, это должно быть монотонным и ортогонально расположенным с интервалами, как будто произведенный meshgrid функция.

Типы данных: single | double

y- данные о координате оси в виде вектора или трехмерного массива тот же размер как V. Если вы задаете трехмерный массив, это должно быть монотонным и ортогонально расположенным с интервалами, как будто произведенный meshgrid функция.

Типы данных: single | double

z- данные о координате оси в виде вектора или трехмерного массива тот же размер как V. Если вы задаете трехмерный массив, это должно быть монотонным и ортогонально расположенным с интервалами, как будто произведенный meshgrid функция.

Типы данных: single | double

Данные об объеме в виде трехмерного массива одного размера с XY, и Z .

Типы данных: single | double

Изозначение, в котором можно вычислить поверхность в виде скаляра.

Типы данных: single | double

Цветные данные в виде вектора или трехмерного массива тот же размер как V. Используйте этот аргумент, чтобы управлять цветным отображением isosurface с данными, отличающимися от этого раньше, вычислял isosurface. Этот аргумент накладывает другой набор данных путем окраски получившегося isosurface. Вектор или массив содержат скалярное значение для каждой вершины в isosurface и сопоставлен с помощью карты текущего цвета.

Можно использовать colormap функция, чтобы настроить цветовую схему. Эта индивидуальная настройка требует изменяющихся значений в массиве, который управляет отношением между поверхностью и палитрой. Массив индекса сопоставляет определенные местоположения графика с, раскрашивает палитру. По умолчанию, промежуточные значения в C отобразитесь линейно в промежуточных строках в палитре.

Типы данных: single | double

Выходные аргументы

свернуть все

Данные об изоповерхности, возвращенные как структура с полями faces и vertices содержа соответствующие поверхности и данные о вершинах.

Типы данных: single | double

Столкнитесь с данными вычисленной изоповерхности, возвращенной как массив.

Типы данных: single | double

Данные о вершине вычисленной изоповерхности, возвращенной как массив.

Типы данных: single | double

Цветные данные вычисленной изоповерхности, возвращенной как массив, содержащий скалярное значение для интерполированных цветных данных каждой вершины, чтобы быть изображенным с картой текущего цвета. Размер colors массив должен совпасть с V.

Типы данных: single | double

Советы

  • Если вы хотите задать пользовательское поле зрения камеры, подсветку или различную карту цветов поверхности, используйте patch функция, чтобы отобразить на графике данные, возвращенные в isosurface. Можно передать структуру, созданную isosurface непосредственно к patch команда. Например:

    s = isosurface(X,Y,Z,V,isovalue);
    patch(s)
  • В качестве альтернативы можно передать отдельные поверхности и массивы вершин, чтобы исправить путем определения имен свойства. Например:

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

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

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