本文主要是介绍matlab_绘制三维切片图及四维图_slice,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 1.三维切片图
- 2.四维图
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:3hsp = 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 onhslicer = slice(x,y,z,v,xd,yd,zd);axis tightxlim([-3,3])view(-10,35)drawnowdelete(hslicer)hold off
end
这篇关于matlab_绘制三维切片图及四维图_slice的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!