Cartoon of expanding dipole wavefronts
Matlab code
% Cartoon of expanding dipole wavefronts
clear; close all;
figure('units','pixels','position',[0 0 1920 1080],'ToolBar','none');
vid = VideoWriter('expandingDipoleWavefronts.mp4','MPEG-4');
vid.Quality = 100;
vid.FrameRate = 30;
open(vid);
set(0,'defaultfigurecolor',[1 1 1]);
set(gca,'linewidth',7);
LL = 16;
wavey = 0:LL/1000:LL;
wavex = 0.0*wavey;
u = 0:pi/50:2*pi; % phi azimuthal
v = 0:pi/50:2*pi; % theta polar
[u,v]=meshgrid(u,v);
N = 400;
lp = [0.4 -0.4 0.7];
ec = [0.25 0.28 0.5]; % myBlue
fc = [1.0 0.83 0]; % gold
for t = 0:1:N
hold off;
x = (t/50)*(1 + cos(v)).*cos(u);
y = (t/50)*(1 + cos(v)).*sin(u);
z = (t/50)*sin(v);
fa = 0.03+0.10*(N - t)/N;
ea = 0.05+0.20*(N - t)/N;
surf(x,y,z,'FaceAlpha',fa,'FaceColor',fc,'EdgeAlpha',ea,'EdgeColor',ec,'FaceLighting','gouraud','DiffuseStrength',1);
light('Position',lp,'Style','infinite');
view(35,25);
hold on;
% oscillating electron sphere
r = 0.32;
osc = 0.5*sin(2*pi*t/(N/4));
[x,y,z] = sphere; surf(x*r,y*r,z*r+osc,'FaceColor',ec,'LineStyle','none');
% incoming E-field
wavez = -sin(2*pi*(4*wavey/LL) + (8*pi*t/N));
plot3(wavex,-wavey,wavez,'color','red', 'LineWidth', 2.0);
if (t > N/4)
hold on;
x2 = ((t-N/4)/50)*(1 + cos(v)).*cos(u);
y2 = ((t-N/4)/50)*(1 + cos(v)).*sin(u);
z2 = ((t-N/4)/50)*sin(v);
fa = 0.05+0.14*(N - (t-N/4))/N;
ea = 0.07+0.28*(N - (t-N/4))/N;
surf(x2,y2,z2,'FaceAlpha',fa,'FaceColor',fc,'EdgeAlpha',ea,'EdgeColor',ec,'FaceLighting','gouraud','DiffuseStrength',1);
end
if (t > N/2)
hold on;
x2 = ((t-N/2)/50)*(1 + cos(v)).*cos(u);
y2 = ((t-N/2)/50)*(1 + cos(v)).*sin(u);
z2 = ((t-N/2)/50)*sin(v);
fa = 0.05+0.20*(N - (t-N/2))/N;
ea = 0.07+0.40*(N - (t-N/2))/N;
surf(x2,y2,z2,'FaceAlpha',fa,'FaceColor',fc,'EdgeAlpha',ea,'EdgeColor',ec,'FaceLighting','gouraud','DiffuseStrength',1);
end
if (t > 3*N/4)
hold on;
x2 = ((t-3*N/4)/50)*(1 + cos(v)).*cos(u);
y2 = ((t-3*N/4)/50)*(1 + cos(v)).*sin(u);
z2 = ((t-3*N/4)/50)*sin(v);
fa = 0.05+0.25*(N - (t-3*N/4))/N;
ea = 0.07+0.50*(N - (t-3*N/4))/N;
surf(x2,y2,z2,'FaceAlpha',fa,'FaceColor',fc,'EdgeAlpha',ea,'EdgeColor',ec,'FaceLighting','gouraud','DiffuseStrength',1);
end
axis square
axis off
xlim([-LL LL]);
ylim([-LL LL]);
zlim([-LL LL]);
% Store the frame
frame = getframe(gcf);
writeVideo(vid,frame);
end
% Output the movie as an mpg file
close(vid);