clear all
close all

%% load constants
c=2.998e8;

%% parameters
q1=1;
q2=100*q1;
q3=1*q1;
a=1;

% parameters for contours
N=20;
Nx=150;
Nz=300;
x=linspace(-N*q1,N*q1,Nx);
y=x;
z=linspace(-60*q1,60*q1,Nz);
[Y,Z,X]=meshgrid(y,z,x);

[Etheta1] = FDb(q1,q2,q3,a,-81.2/2/c,X,Y,Z);
[Etheta2] = FDb(q1,q2,q3,a,0*q1/c,X,Y,Z); 
[Etheta3] = FDb(q1,q2,q3,a,81.2/2*q1/c,X,Y,Z);

Etheta1(Z>-20.1)=0;
Etheta2(Z>19.9)=0;
Etheta2(Z<-19.9)=0;
Etheta3(Z<20.1)=0;
    %% E-field - real pulse
v1=real(Etheta1); 
v1=v1/max(max(max(abs(v1))));
v2=real(Etheta2); 
v2=v2/max(max(max(abs(v2))));
v3=real(Etheta3); 
v3=v3/max(max(max(abs(v3))));

figure;box on;
vt=v1+v2+v3;
imagesc(y,z,vt(:,:,length(x)/2));axis equal;axis tight;
load Mymap;colormap(Mymap),colorbar;set(gca,'Clim',[-1 1]);
xlim([y(1) y(end)]);ylim([z(1) z(end)]);

% slice(y,z,x,vt,NaN,NaN,0)
% shading interp 
% load Mymap;colormap(Mymap),colorbar;set(gca,'Clim',[-1 1]);
% xlabel('y');ylabel('z');zlabel('x');axis tight

lt=0.10;
alf=0.5;

%v1
figure; box on;
p = patch(isosurface(y,z,x,v1,lt));
isonormals(y,z,x,v1,p)
p.FaceColor = 'red';
p.EdgeColor = 'none';

hold on
p = patch(isosurface(y,z,x,v1,-lt));
isonormals(y,z,x,v1,p)
p.FaceColor = 'blue';
p.EdgeColor = 'none';

%2
p = patch(isosurface(y,z,x,v2,lt));
isonormals(y,z,x,v2,p)
p.FaceColor = 'red';
p.EdgeColor = 'none';

hold on
p = patch(isosurface(y,z,x,v2,-lt));
isonormals(y,z,x,v2,p)
p.FaceColor = 'blue';
p.EdgeColor = 'none';

%3
p = patch(isosurface(y,z,x,v3,lt));
isonormals(y,z,x,v3,p)
p.FaceColor = 'red';
p.EdgeColor = 'none';

hold on
p = patch(isosurface(y,z,x,v3,-lt));
isonormals(y,z,x,v3,p)
p.FaceColor = 'blue';
p.EdgeColor = 'none';

alpha(alf)
% xlabel('y');ylabel('z');zlabel('x');axis tight
% view(3); 
view(-90,0); 
camlight 
lighting gouraud
camlight('headlight') 
lighting gouraud
camlight('right')
lighting gouraud
xlim([y(1) y(end)]);ylim([z(1) z(end)]);zlim([x(1) x(end)]);
daspect([1,1,1])

% slice的方法加底-左侧
vs=zeros(size(vt));
vs(:,size(vt,2),:)=vt(:,size(vt,2)/2,:);
% vs=(vs+1)-1;%处理一下数据使得适合colorbar
hx = slice(Y,Z,X,vs,y(end),[],[]);
hx.FaceColor = 'interp';
hx.EdgeColor = 'none';

% % slice的方法加底-后侧
% vs=zeros(size(vt));
% % vs(1,:,:)=vt(size(vt,1)/2,:,:);
% vs(1,:,:)=Esi0(:,:);
% hx = slice(Y,Z,X,vs,[],z(1),[]);
% hx.FaceColor = 'interp';
% hx.EdgeColor = 'none';

% % surf的方法加底
% f_xy=vt(:,:,length(x)/2);
% x_xy=Y(:,:,length(x)/2);
% y_xy=Z(:,:,length(x)/2);
% xy=x(1)*ones(size(f_xy));
% surf(x_xy,y_xy,xy,f_xy,'edgecolor','none')
load Mymap;colormap(Mymap);set(gca,'Clim',[-1 1]);
% % load mymap2;colormap(mymap2);set(gca,'Clim',[-1 3]);
% % load mymap3;colormap(mymap3);set(gca,'Clim',[-1 3]);

% camproj perspective

camva(40);  % Set the camera field of view 
campos([-15 0 100]);  % Put the camera at the origin
camtarget([0 0 -1]);  % The camera looks along the +Z axis
camproj('perspective');
set(gcf,'Position',[ 260    80   1500   800],'InvertHardCopy','off')
camroll(-180)

set(gca,'xtick',[],'ytick',[],'ztick',[])

% axis vis3d
% daspect([1 1 1])