1. 光线的弯曲

2. 是左还是右?

Matlab 产生动图核心代码:
framenumber = N % 设置动画帧数(如设50个)
gap_max = r % 最大中心距离(如设1μm)
% 产生图片组
fork= 1: framenumber
gap = k / (framenumber - 1) *gap_max %计算当前帧的中心距离
phase_shift= 2 *pi * gap / lamda %计算相位差
I_niudun=(cos(pi*(X_niudun.^2+Y_niudun.^2)/(R*lamda)+ phase_shift)).^2;
imshow(I_niudun); %
% 保存图片
filename =sprintf('giffigure/frame_%d.png', k);
imwrite(I_niudun,filename);
end
% 合成 GIF 动图
for i = 1:framenumber
filename= sprintf('giffigure/frame_%d.png', i);
frames{i}= imread(filename);
end
imwrite(frames{1},'giffigure/Newtonring.gif', 'DelayTime', 0.5, 'LoopCount', inf);
% 每帧图像暂停0.5s;loopCount命令记录了for循环进度信息
for i = 2:framenumber
imwrite(frames{i},'giffigure/Newtonring.gif', 'DelayTime', 0.5, 'WriteMode', 'append'); % 在第一帧图片后添加其它帧图片
end

