% Movie of Lorentz force, current, and B-field

clear; close all;

vid = VideoWriter('lorentzForce.mp4','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);

myBlue = [0.4 0.44 0.73];

hold off;
lp = [0.4 -0.4 0.7];
light('Position',lp,'Style','infinite');
for i = 0:pi/180:2*pi
    newplot;
    mArrow3([0 0 0],[1 0 0],'color',myBlue,'stemWidth',0.016,...
        'tipWidth',0.04,'facealpha',0.8); % conv current
    mArrow3([0 0 0],[-1 0 0],'color',myBlue,'stemWidth',0.016,...
        'tipWidth',0.04,'facealpha',0.8); % electron flow
    mArrow3([0 0 0],[-sin(i) 0 -cos(i)],'color',[0.9 0.8 0],'stemWidth',...
        0.016,'tipWidth',0.04,'facealpha',0.8); % B-field
    mArrow3([0 0 0],[0 cos(i) 0],'color','red','stemWidth',0.016,...
        'tipWidth',0.04,'facealpha',1); % Lorentz force
    r = 0.08;
    hold on;
    [x,y,z] = sphere(70); surf(x*r,y*r,z*r,'FaceColor',myBlue,'EdgeColor','none');
    axis square;
    axis off;
    light('Position',lp,'Style','infinite');
    LL = 1;
    xlim([-LL LL]);
    ylim([-LL LL]);
    zlim([-LL LL]);
    view(-35,31);
    hold off;
    % Store the frame
    frame = getframe(gcf);
    writeVideo(vid,frame);
    hold off;
end
hold off;
% Output the movie as an mpg file
close(vid);