You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

76 lines
2.4 KiB

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