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.
70 lines
2.1 KiB
70 lines
2.1 KiB
function plot_smooth_ani(aPhys,bPhys,cPhys,filename)
|
|
% 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
|
|
|
|
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;
|
|
|
|
% PLOT----------------------------------------
|
|
disp('Start Ploting')
|
|
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')
|
|
|
|
% set(gcf,'paperpositionmode','auto');
|
|
% print('-depsc',filename);
|
|
|
|
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('ani_case2_pnorm.stl',f,v,'mode','binary');
|
|
stlwrite(filename,f,v,'mode','binary');
|
|
end
|