И другие программы этой серии
7.29):
% Программа построения части черепной коробки человека
load mri; D = squeeze(D);
[x,y,z,D] = subvolume(D,[60,80,nan,80,nan,nan]);
376 Программные средства специальной графики
Рис. 7.28. Черепная коробки человека со срезом
Рис. 7.29. Объемный вырез черепной коробки человека со срезами с разных сторон
Расширенная техника визуализации вычислений 377
p1 = patch(isosurface(x,y,z,D, 5),...
\'FaceColor\',\'red\',\'EdgeColor\',\'none\'); isonormals(x,y,z,D,p1); p2 = patch(isocaps(x,y,z,D, 5),...
\'FaceColor\',\'interp\',\'EdgeColor\',\'none\'); view(3); axis tight; daspect([1,1,.4]); colormap(gray(100)) camlight right; camlight left; lighting gouraud
7.6.5. Визуализация струи в пространстве
Дескрипторная графика обеспечивает эффективную визуализацию в пространстве струй жидкостей или газов. Такие задачи сплошь и рядом встречаются в гидродинамике и аэродинамике. Наглядный пример этого дает функция flow, создающая массивы представления струи: [x,y,z,v] = flow;
Выполним нормализацию масштабов по осям координат и вспомогательные операции к подготовке представления струи:
% Программа построения струи (часть 1)
xmin = min(x(:)); ymin = min(y(:)); zmin = min(z(:)); xmax = max(x(:)); ymax = max(y(:)); zmax = max(z(:)); hslice = surf(linspace(xmin,xmax,100),…
linspace(ymin,ymax,100), zeros(100)); rotate(hslice,[-1,0,0],-45);
xd = get(hslice,\'XData\'); yd = get(hslice,\'YData\'); zd = get(hslice,\'ZData\'); delete(hslice)
Обратите внимание на то, что объемный массив hsplice в этом примере имеет вспомогательную роль. После получения из него массивов xd, yd и zd проекций массив hsplice удаляется во избежание перегрузки памяти компьютера.
Теперь построим проекции струи на плоскости координатного ящика и диагональную плоскость:
% Программа построения струи (часть 2)
h = slice(x,y,z,v,xd,yd,zd);
set(h,\'FaceColor\',\'interp\', \'EdgeColor\',\'none\', \'DiffuseStrength\',.8)
hold on; hx = slice(x,y,z,v,xmax,[],[]);
set(hx,\'FaceColor\',\'interp\',\'EdgeColor\',\'none\')
hy = slice(x,y,z,v,[],ymax,[]);
set(hy,\'FaceColor\',\'interp\',\'EdgeColor\',\'none\')
hz = slice(x,y,z,v,[],[],zmin);
set(hz,\'FaceColor\',\'interp\',\'EdgeColor\',\'none\')
daspect([1,1,1]); axis tight; box on
view(-38.5,16); camzoom(1.4); camproj perspective
Добавим эффекты светового выделения и вывода шкалы цветов:
% Программа построения струи (часть 3)
lightangle(-45,45); colormap (jet(24));
set(gcf,\'Renderer\',\'zbuffer\'); colormap (flipud(jet(24)));
caxis([-5,37.4832]); colorbar(\'horiz\')
378
Программные средства специальной графики
Расширенная техника визуализации вычислений
379
Собрав воедино представленные фрагменты m-файла и пустив его на исполнение, получим рис.
Начало в части 1