function plot_smooth_ani_slice(aPhys,bPhys,cPhys) % load('ani_rmin1.5_cab2.mat','a_log','b_log','c_log') % term_choose=499; % aPhys=a_log{term_choose,2};bPhys=b_log{term_choose,2};cPhys=c_log{term_choose,2}; nz=size(aPhys,1);ny=size(aPhys,2);nx=size(aPhys,3); l=0.49; xx=-1:1:1; [dx,dy,dz]=meshgrid(xx,xx,xx); dX=[dx(:),dy(:),dz(:)].*l; num_p=size(xx,2)^3; count=1; a_fun = zeros(nx*ny*nz*num_p,1); b_fun = zeros(nx*ny*nz*num_p,1); c_fun = zeros(nx*ny*nz*num_p,1); in1=zeros(nx*ny*nz*num_p,3); for i=1:nx for j=1:ny for k=1:nz for tt=0:num_p-1 a_fun(count*num_p-tt,1) = aPhys(k,j,i); b_fun(count*num_p-tt,1) = bPhys(k,j,i); c_fun(count*num_p-tt,1) = cPhys(k,j,i); in1(count*num_p-tt,:)=[i-1/2,j-1/2,k-1/2]+dX(tt+1,:); end count=count+1; end end end disp('Start Interpolanting') tic Fa=scatteredInterpolant(in1(:,1),in1(:,2),in1(:,3),a_fun,'natural','linear'); Fb=scatteredInterpolant(in1(:,1),in1(:,2),in1(:,3),b_fun,'natural','linear'); Fc=scatteredInterpolant(in1(:,1),in1(:,2),in1(:,3),c_fun,'natural','linear'); x2=0:0.1:nx; y2=0:0.1:ny; z2=0:0.1:nz; [x,y,z]=meshgrid(x2,y2,z2); a_sim = Fa(x,y,z);b_sim = Fb(x,y,z);c_sim = Fc(x,y,z); Interpolanting_time=toc % PLOT---------------------------------------- disp('Start Ploting') p=cos(2*pi*(x-1/2))+ a_sim.*cos(2*pi*(y-1/2))+ b_sim.*cos(2*pi*(z-1/2))- c_sim; % figure() % isosurface(x,y,z,p,0); % isocaps(x,y,z,p,0); % axis equal;axis off; % colormap([18 184 246]./256); % view(0,0); %视角的控制 % lighting phong; %光照模式 % camlight right; %光源位置 % material metal % disp('plot complete') disp('Start making STL') [f1,v1] = isosurface(x,y,z,p,0); [f2,v2] = isocaps(x,y,z,p,0); v = [v1;v2]; surface_no = size(v1,1);%是v1不是f1 点的序号加 % surface_no(2) = []; f2 = f2 + surface_no; f= [f1;f2]; % stlwrite('iso.stl',f,v,'mode','ascii'); % stlwrite('ani3D_Table_pnorm.stl',f,v,'mode','binary'); stlwrite('ani3D_case2_pnorm2.stl',f,v,'mode','binary'); disp('Start making STL slice') [f1,v1] = isosurface(x(1:101,:,:),y(1:101,:,:),z(1:101,:,:),p(1:101,:,:),0); [f2,v2] = isocaps(x(1:101,:,:),y(1:101,:,:),z(1:101,:,:),p(1:101,:,:),0); v = [v1;v2]; surface_no = size(v1,1);%是v1不是f1 点的序号加 % surface_no(2) = []; f2 = f2 + surface_no; f= [f1;f2]; % stlwrite('iso.stl',f,v,'mode','ascii'); stlwrite('ani3D_case2_pnorm2_slice.stl',f,v,'mode','binary'); end