s- and p-polarizations  

Matlab code 

% Cartoons of E- and B-fields propagating together along two wavelengths as

% a linearly s- or p-polarized plane wave

 

clear; close all;

 

prompt = 's-polarized (S), or p-polarized (P)? ';

str = input(prompt,'s');

 

myBlue = [0.4 0.44 0.73];

 

str1 = '-polarized.mp4';

fileName = [str,str1]; % Name of file depends on polarization choice

 

vid = VideoWriter(fileName,'MPEG-4');

vid.Quality = 100;

vid.FrameRate = 30;

open(vid);

figure('units','pixels','position',[0 0 1920 1080],'ToolBar','none');

set(0,'defaultfigurecolor',[1 1 1]);

set(gca,'linewidth',7);

set(gca, 'Projection','perspective');

 

[x,y,z] = sphere(200);

 

lp = [0.4 0.4 0.7];

LL = 6*pi; % two wavelengths

wavex = -2*LL/3:pi/90:LL/3;

wavey = 0.0*wavex;

xx = [-1 1; 1 -1];

yy = [-1 -1; 1 1];

zz = [0 0; 0 0];

 

for i = 0:pi/45:4*pi-pi/45

    newplot;

    if (str == 'P') || (str == 'p')

        propAxis = mArrow3([-4*pi 0 0],[0 0 0],'color','k','stemWidth',0.064,...

            'tipWidth',0.14,'facealpha',0.8);

        rotate(propAxis,[0 1 0],20,[0 0 0]);

        hold on;

        

        wavez = 4*sin((wavex) + (-i));

        % p-polarization

        efield = plot3(wavex,wavez,wavey,'color','r', 'LineWidth', 2.5); % E-field

        rotate(efield,[0 1 0],20,[0 0 0]);

        bfield = plot3(wavex,wavey,wavez,'color',myBlue, 'LineWidth', 2.5); % B-field

        rotate(bfield,[0 1 0],20,[0 0 0]);

        

        % Draw surface

        for jj = 1:-0.01:0

            plotcube([1 1 0.01]*LL,[-0.5 -0.5 jj-1-0.01]*LL,(jj^8)/5,'g',0);

        end

        

        % Oscillating electron

        electron = surf(x/3,y/3+2*sin(i),z/3,'EdgeColor','none','FaceColor',myBlue,...

            'FaceLighting','gouraud','DiffuseStrength',1);

        

        % Dot-dashed lines

        plot3([-LL/2 LL/2],[0 0],[0 0],'Color','k','LineWidth',1.6,'LineStyle','-.');

        plot3([0 0],[-LL/4 LL/4],[0 0],'Color','k','LineWidth',1.6,'LineStyle','-.');

        

        % Add dummy lines to stop resizing of viewed volume

        dumLine = plot3([0 0],[-0.1 0.1],[LL LL],'Color','w');

        dumLine.Color(4) = 0.0; % alpha = 0; fully transparent

        dumLine2 = plot3([-2.3*LL/3 1.15*LL/3],[0 0],[0 0],'Color','w');

        dumLine2.Color(4) = 0.0; % alpha = 0; fully transparent

        

    elseif (str == 'S') || (str == 's')

        propAxis = mArrow3([-4*pi 0 0],[0 0 0],'color','k','stemWidth',0.064,...

            'tipWidth',0.14,'facealpha',0.8);

        rotate(propAxis,[0 1 0],10,[0 0 0]);

        hold on;

        

        wavez = 4*sin((wavex) + (-i));

        % s-polarization

        bfield = plot3(wavex,-wavez,wavey,'color',myBlue, 'LineWidth', 2.5); % E-field

        rotate(bfield,[0 1 0],10,[0 0 0]);

        efield = plot3(wavex,wavey,wavez,'color','r','LineWidth', 2.5); % B-field

        rotate(efield,[0 1 0],10,[0 0 0]);

        

        % Draw surface

        for jj = 1:-0.01:0

            plotcube([1 1 0.01]*LL,[-0.5 -0.5 jj-1-0.01]*LL,(jj^8)/5,'g',0);

        end

        

        % Oscillating electron

        electron = surf(x/3+2*sin(i)*sind(10),y/3,z/3+2*sin(i)*cosd(10),'EdgeColor','none','FaceColor',myBlue,...

            'FaceLighting','gouraud','DiffuseStrength',1);

        

        % Dot-dashed lines

        plot3([-LL/2 LL/2],[0 0],[0 0],'Color','k','LineWidth',1.6,'LineStyle','-.');

        plot3([0 0],[0 0],[-LL/4 LL/4],'Color','k','LineWidth',1.6,'LineStyle','-.');

        plot3([-LL/4*sind(10) LL/4*sind(10)],[0 0],[-LL/4*cosd(10) LL/4*cosd(10)],...

            'Color','k','LineWidth',1.6,'LineStyle','-.');

        

        % Add dummy lines to stop resizing of viewed volume

        dumLine = plot3([0 0],[-0.1 0.1],[LL LL],'Color','w');

        dumLine.Color(4) = 0.0; % alpha = 0; fully transparent

        dumLine2 = plot3([-2.3*LL/3 1.15*LL/3],[0 0],[0 0],'Color','w');

        dumLine2.Color(4) = 0.0; % alpha = 0; fully transparent

    end

    axis square;

    axis off;

    axis tight;

    axis equal;

    light('Position',lp,'Style','infinite');

    view(50,25);

    frame = getframe(gcf);

    writeVideo(vid,frame);

    hold off;

end

 

% Output the movie as an mpg file

close(vid);