% Cartoon of flexing a mirror to change the bending radius 

clear; close all; 
vid = VideoWriter('flexedMirror.mp4','MPEG-4'); 
vid.FrameRate = 60;    % Default 30
vid.Quality = 100;    % Default 75
open(vid); 

set(0,'defaultfigurecolor',[1 1 1]);    % Make background colour white 
figure('units','pixels','position',[0 0 1920 1080],'ToolBar','none'); 

tighten = 20:20:4000;
relax = 4000:-20:20;
tightenrelax = [0.1 tighten relax 0.1]; 
for i = tightenrelax
    hold off 
    r = 1000000/i; % Vary the radius of arc between 50 m and 250 mm 
    l = 180; % Set the length of arc to 180 mm
    crcm = 2*pi*r;                                     % Full circle circumference
    arcfrac = l/crcm;                                  % Arc length fraction of circumference
    angfrac = 2*pi*arcfrac;                            % Angle fraction of circumference (rad)
    halfang = 180*arcfrac;
    angv = linspace(-pi/2-angfrac/2, -pi/2+angfrac/2); % Angle vector in radians 
    x = r*cos(angv);
    y = r*sin(angv) + r;
    plot(x, y, 'Color', [37 44 94]/256, 'LineWidth',32)
    hold on
    axis equal 
    axis off 
    axis([-150  150  -20  150]) 
    str1 = 'Subtended angle = +/- ';
    str2 = num2str(halfang,'% 4.2f'); 
    str3 = '^{o}';
    strTot = [str1,str2,str3]; 
    hText = text(0, 100, strTot, 'FontSize',22,'HorizontalAlignment', 'center');

    frame = getframe(gcf);
    writeVideo(vid,frame); 
    hold on 
end
% Output the movie as an mpg file
close(vid);
