Cartoon of a rounded polygon shrinking to a circle
Matlab code 

Download matlab code

% Cartoon of a rounded polygon whereby the straight sectors between the

% arcs shrinks from having a length equal to the arc radius down to zero.

% The purpose of this video is simply to show that one must consider only

% the arc sectors when calculating the electrons' angular frequency in a

% storage ring

 

clear; close all;

 

prompt = 'Number sides of the polygon [default = 12 (dodecahedron)]: ';

Pnum = input(prompt);

if isempty(Pnum)

    Pnum = 12;

end

 

v = VideoWriter('polygonShrink.mp4','MPEG-4');

v.FrameRate = 30;    % default 30

v.Quality = 100;    % default 75

open(v);

figure('ToolBar','none');

set(0,'defaultfigurecolor',[1 1 1]); % white background

 

phi = (-pi/Pnum:pi/180:pi/Pnum);

radius = 2; % length of straight

N=40; % number of frames

axisSize = Pnum^2/(2*(Pnum-2)); % size of axes

 

for j = 0:N % frame loop

    newplot;

    for i = 0:Pnum-1 % draw each sector of rounded dodecagon

        axis([-axisSize axisSize -axisSize axisSize]);

        axis square; % square plot

        axis off;

        straight = radius*(N - j)/N; % length of straight. Shrinks to zero

        theta0 = (2*pi/Pnum)*i; % angle of centre line for each sector

        L1 = straight/(2*tan(pi/Pnum));

        L = L1 + radius; % distance from centre of straight to geometric centre

 

        x0 = L*sin(theta0); % x-coordinate of centre of straight

        y0 = L*cos(theta0); % y-coordinate of centre of straight

 

        straightStartx = x0 - (straight/2)*cos(theta0); % x-coord of start of straight

        straightStarty = y0 + (straight/2)*sin(theta0); % y-coord of start of straight

        straightEndx = x0 + (straight/2)*cos(theta0); % x-coord of end of straight

        straightEndy = y0 - (straight/2)*sin(theta0); % y-coord of end of straight

 

        straightx = [straightStartx straightEndx];

        straighty = [straightStarty straightEndy];

        hold on;

        plot(straightx,straighty,'color',[1,0,0], 'LineWidth', 8.0); % plot in red

 

        phiNow = phi + theta0 + pi/Pnum; % angular range of the arc

        arcCentre = straight/(2*sin(pi/Pnum)); % Distance geometric centre to origin of arc

        arcCentrex = arcCentre*sin(theta0 + pi/Pnum); % x-coord of arc origin

        arcCentrey = arcCentre*cos(theta0 + pi/Pnum); % x-coord of arc origin

        arcX = arcCentrex + radius*sin(phiNow); % set of x-coords for arc

        arcY = arcCentrey + radius*cos(phiNow); % set of y-coords for arc

        plot(arcX,arcY,'color',[0,0,1], 'LineWidth', 8.0); % plot in blue

        hold off;

    end

    frame = getframe(gcf);

    writeVideo(v,frame);

    hold off;

end

% Output the movie as an mpg file

close(v);