1.三维切片图

三维曲面图的操作对象是三维曲面,而三维切片图的操作对象是三维实心体

三维曲面图需要三个指标,且三个指标都是二维的;而三维切片图需要四个指标,且四个指标都是三维的,多的那一个指标,理解起来其实就是图形由曲面变成了实心体,第四个指标表示三维体的内部情况

%三维切片图需要四个指标,且X,Y,Z,V都是三维的,多了一个v其实就是由曲面变成了实心体,v表示三维体的内部情况
clc;clear;close all;
[X,Y,Z] = meshgrid(-2:.2:2);%由一维扩充成三维,这样生成的X,Y,Z都是三维的
V = X.*exp(-X.^2-Y.^2-Z.^2);%V也是三维的

xslice = [-1.2,0.8,2];%画平行于yoz的切平面   
yslice = [];%画平行于xoz的切平面 
zslice = 0;%画平行于xoy的切平面 
slice(X,Y,Z,V,xslice,yslice,zslice)

%面
x=-2:.2:2;y=-2:.2:2;z=-2:.2:2;
[X,Y,Z]=griddata(x,y,z,linspace(min(x),max(x))',linspace(min(y),max(y)),'v4');%插值
surf(X,Y,Z)

%把面变成实心体,对实心体切面就是三维切片图
x=-2:.2:2;y=-2:.2:2;z=-2:.2:2;
[X,Y,Z] = meshgrid(-2:.2:2);%由一维扩充成三维,这样生成的X,Y,Z都是三维的
V = X.*exp(-X.^2-Y.^2-Z.^2);%V也是三维的

xslice = [-1.2,0.8,2];%画平行于yoz的切平面   
yslice = [];%画平行于xoz的切平面 
zslice = 0;%画平行于xoy的切平面 
slice(X,Y,Z,V,xslice,yslice,zslice)
hold on
[X,Y,Z]=griddata(x,y,z,linspace(min(x),max(x))',linspace(min(y),max(y)),'v4');%插值
surf(X,Y,Z)

2.四维图

%四维图其实是动态三维图,第四维为时间,只能用动图或视频表示
[x,y,z] = meshgrid(-2:.2:2,-2:.25:2,-2:.16:2);
v = x.*exp(-x.^2-y.^2-z.^2);
xslice = [-1.2,.8,2];
yslice = 2;
zslice = [-2,0];
[xsp,ysp,zsp] = sphere;
slice(x,y,z,v,[-2,2],2,-2)
for i = -3:.2:3
    hsp = surface(xsp + i,ysp,zsp);
    rotate(hsp,[1 0 0],90)
    xd = get(hsp,'XData');
    yd = get(hsp,'YData');
    zd = get(hsp,'ZData');
    delete(hsp)
    hold on
    hslicer = slice(x,y,z,v,xd,yd,zd);
    axis tight
    xlim([-3,3])
    view(-10,35)
    drawnow
    delete(hslicer)
    hold off
end

在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐