Relativistic transformation from dipole to synchrotron radiation

Matlab code 

Download matlab code

% Movie of transformation from dipole to synchrotron radiation as a

% function of beta (v/c)

clear; close all;

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

 

phi = 0:pi/500:2*pi; % phi azimuthal

theta = 0:pi/500:2*pi; % theta polar

[phi,theta]=meshgrid(phi,theta);

N = 199; % Number of time frames

 

lp1 = [-0.4 -0.4 0.4]; % light position for illuminating surface

lp2 = [0.4 -0.2 0.4]; % light position for illuminating surface

ec = [0.25 0.28 0.55]; % Phil blue color

fc = [1.0 0.83 0]; % Gold color

 

 

for i = 0:0.5:N

    hold off;

    beta = 0.0025+i/(N+1); % v/c

    gamma = 1/(1 - beta^2)^0.5; % E/mec^2

    scaleFac = 1/(1 - beta)^3;

    boxSize = scaleFac*(N+1-i)^0.125;

    pt1 = (1 - beta*cos(theta)).^2;

    pt2 = ((sin(theta).*cos(phi)).^2)/gamma^2;

    pt3 = (1 - beta*cos(theta)).^5;

    rho = (pt1-pt2)./pt3;

    x = rho.*sin(theta).*cos(phi);

    y = rho.*sin(theta).*sin(phi);

    z = rho.*cos(theta);

 

    fa = 0.56;

    ea = 0.0;

    surf(x,-z,y,'FaceAlpha',fa,'FaceColor',fc,'EdgeAlpha',ea,'EdgeColor', ...

        ec,'LineStyle','none','FaceLighting','gouraud','DiffuseStrength',0.8);

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

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

 

    if (i <= N/4)

        view(-90,16);

    elseif (i > N/4) && (i < N/2)

        view(-90,16+(74*((i-N/4)/(N/4)))); % Fast tilt from 23 deg above plane to vertically above plane

    else

        view(-90,90);

    end

    str1 = '{\beta} = ';

    str2 = num2str(beta,'% 4.4f');

    strTot = [str1,str2];

    hText = text(0.55*boxSize, -0.64*boxSize, strTot, 'FontSize',14);

    hold on;

 

    th = 0:pi/50:2*pi;

    xunit = 2*boxSize*cos(th) + 0;

    yunit = 2*boxSize*sin(th) + 2*boxSize;

    zunit = 0 * sin(th);

    plot3(-yunit,xunit,zunit,'color','blue', 'LineWidth', 2.0);

 

    [x y] = meshgrid(-boxSize:boxSize/4:boxSize); % Generate x and y data

    z = zeros(size(x, 1)); % Generate z data

    surf(x/2, y, z,'FaceAlpha',0.1,'FaceColor',ec,'EdgeAlpha',ea,'EdgeColor',ec,'LineStyle','none') % Plot the surface

 

    axis square % Keep scaling 1:1:1 for x,y,z

    axis off

 

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

 

    % Dimensions of 3D box

    xlim([-boxSize boxSize]);

    ylim([-boxSize boxSize]);

    zlim([-boxSize boxSize]);

    % Store the frame

    frame = getframe(gcf);

    writeVideo(vid,frame);

 

end

hold off;

% Output the movie as an mpg file

close(vid);