clear; close all;

figure('units','pixels','ToolBar','none');
vid = VideoWriter('qubit.mp4','MPEG-4');
vid.Quality = 100;
vid.FrameRate = 30;
open(vid);
set(0,'defaultfigurecolor',[1 1 1]);
set(gca,'linewidth',7);
lp = [0.4 -0.4 0.7]; 
light('Position',lp,'Style','infinite');

for ii = 0:pi/30:pi 
    newplot;
    rcomp = (pi-ii)/pi;
    gcomp = 0; 
    bcomp = ii/pi;
    arrowCol = [rcomp gcomp bcomp];
    mArrow3([0 -sin(ii) -cos(ii)],[0 1.4*sin(ii) 1.4*cos(ii)],'color',arrowCol,'stemWidth',0.08,'tipWidth',0.14,'facealpha',1); % Lorentz force 
    r = 0.25;
    hold on;
    [x,y,z] = sphere(70); surf(x*r,y*r,z*r,'FaceColor',[0.28 0.32 0.64],'EdgeColor','none'); 
    axis square;
    axis off;
    light('Position',lp,'Style','infinite');
    LL = 1.6;
    xlim([-LL LL]);
    ylim([-LL LL]);
    zlim([-LL LL]);
    view(35,31);
    frame = getframe(gcf); 
    writeVideo(vid,frame); 
    hold off; 
end 
for ii = pi:-pi/30:0 
    newplot;
    rcomp = (pi-ii)/pi;
    gcomp = 0; 
    bcomp = ii/pi; 
    arrowCol = [rcomp gcomp bcomp];
    mArrow3([0 -sin(ii) -cos(ii)],[0 1.4*sin(ii) 1.4*cos(ii)],'color',arrowCol,'stemWidth',0.08,'tipWidth',0.14,'facealpha',1); % Lorentz force 
    r = 0.25;
    hold on;
    [x,y,z] = sphere(70); surf(x*r,y*r,z*r,'FaceColor',[0.28 0.32 0.64],'EdgeColor','none'); 
    axis square;
    axis off;
    light('Position',lp,'Style','infinite');
    LL = 1.6;
    xlim([-LL LL]);
    ylim([-LL LL]);
    zlim([-LL LL]);
    view(35,31);
    frame = getframe(gcf); 
    writeVideo(vid,frame); 
    hold off; 
end 
hold off;
% Output the movie as an mpg file
close(vid);