File:Lens and wavefronts.gif
来自Wikimedia Commons
跳转到导航
跳转到搜索
Lens_and_wavefronts.gif (183 × 356像素,文件大小:35 KB,MIME类型:image/gif、循环、9帧、0.7秒)
文件信息
结构化数据
说明
说明
添加一行文字以描述该文件所表现的内容
Siingleline
slnglelens
摘要
[编辑]描述Lens and wavefronts.gif | Illustration of wavefronts after passing through a lens. Interestingly, to produce a point source reverse the direction of the waves, with the focus point acting as a point source. |
日期 | (UTC) |
来源 | self-made with MATLAB |
作者 | Oleg Alexandrov |
其他版本 |
![]() |
许可协议
[编辑]Public domainPublic domainfalsefalse |
![]() |
我,本作品著作权人,释出本作品至公有领域。这适用于全世界。 在一些国家这可能不合法;如果是这样的话,那么: 我无条件地授予任何人以任何目的使用本作品的权利,除非这些条件是法律规定所必需的。 |
siingleline
[编辑]% Illustration of planar wavefronts going through a lens and getting focused
% into a converging spherical wave
function main ()
% lens index
n=1.5;
% number of points, used for plotting
N = 100;
% radii of lens surfaces
R1 = 0.5;
R2 = 1.5;
% centers of circles (y coord is 0)
O1 = -2.9;
O2 = -O1;
% focal length
f = (n-1)*(1/R1+1/R2); f = 1/f;
% theta0 determines the width of the lens
theta0=pi/6;
Theta = linspace(-theta0, theta0, N);
% right face of the lens
L1x = R1*cos(Theta)+O1;
L1y =R1*sin(Theta);
% left size of the lens
L2x=-R2*cos(Theta)+O2;
L2y = R2*sin(Theta);
% flat top part
Topx = [L1x(N), L2x(N)];
Topy = [L1y(N), L2y(N)];
% flat bottom part
Botx = [L1x(1) L2x(1)];
Boty = [L1y(1), L2y(1)];
% the lens
Lensx = [L1x rv_vec(Topx), rv_vec(L2x), Botx];
Lensy = [L1y rv_vec(Topy), rv_vec(L2y), Boty];
% Parameters for graphing
Lens_color = [204, 226, 239]/256;
Lens_border = 0.3*[1, 1, 1];
lbw = 1.3; % lens border width
wavefr_color = [1, 0, 0];
wavefr_bdw = 2;
% spacing between wavefronts (both plane and spherical ones)
spacing = 0.25;
% 2*H is the height of the plane wavefronts
H = L1y(N);
% theta2 = slope of the line going from the upper-right
% end of the lens to the focus point
theta2 = atan(L1y(N)/(f-L1x(N)));
% Shape of the spherical wavefronts.
Theta = linspace(-theta2, theta2, N);
X = -cos(Theta);
Y = sin(Theta);
S = -f; % start ploting waves from here to the right
% number of frames in the movie
num_frames = 10;
Shifts = linspace(0, spacing, num_frames+1);
% start at S+shift, plot the wavefronts
for frame_no = 1:num_frames
shift = Shifts(frame_no);
s = S+shift;
% plotting window
figure(1); clf; hold on; axis equal; axis off;
% plot the plane wavefronts
while s < 0
plot([s, s], [-H, H], 'color', wavefr_color, 'linewidth', wavefr_bdw);
s = s + spacing;
end
% plot the spherical wavefronts
s = s - 10*spacing; % backtrack a bit
while s < f
rho = f-s;
if rho*Y(N) <= L1y(N)
plot(rho*X+f, rho*Y, 'color', wavefr_color, 'linewidth', wavefr_bdw);
end
s = s + spacing;
end
% plot the lens
fill(Lensx, Lensy, Lens_color, 'EdgeColor', Lens_border, 'LineWidth', lbw);
% get(H)
% return
% Invisible points to force MATLAB to keep the
% plotting window fixed.
tiny = 0.15*spacing;
white = 0.999*[1, 1, 1];
plot(S-tiny, H+tiny, 'color', white);
plot(S-tiny, -H-tiny, 'color', white);
plot(f+tiny, H+tiny, 'color', white);
plot(f+tiny, -H-tiny, 'color', white);
% Rotate by 90 degrees
set(gca, 'View', [90, 90])
% save current file
frame_file = sprintf('Frame%d.eps', 1000+frame_no);
disp(frame_file);
saveas(gcf, frame_file, 'psc2');
pause(0.07)
end
% The frames were converted to a movie with the command
% convert -antialias -loop 10000 -delay 8 -compress LZW Frame100* Lens_and_wavefronts.gif
function W = rv_vec(V)
K = length(V);
W = V;
for i=1:K
W(i) = V(K-i+1);
end
文件历史
点击某个日期/时间查看对应时刻的文件。
日期/时间 | 缩略图 | 大小 | 用户 | 备注 | |
---|---|---|---|---|---|
当前 | 2007年11月25日 (日) 06:35 | ![]() | 183 × 356(35 KB) | Oleg Alexandrov(留言 | 贡献) | tweak |
2007年11月24日 (六) 04:10 | ![]() | 171 × 356(33 KB) | Oleg Alexandrov(留言 | 贡献) | tweak | |
2007年11月24日 (六) 04:09 | ![]() | 171 × 356(33 KB) | Oleg Alexandrov(留言 | 贡献) | tweak | |
2007年11月24日 (六) 00:56 | ![]() | 171 × 359(33 KB) | Oleg Alexandrov(留言 | 贡献) | tweak, same license | |
2007年11月24日 (六) 00:53 | ![]() | 171 × 359(32 KB) | Oleg Alexandrov(留言 | 贡献) | tweak | |
2007年11月24日 (六) 00:49 | ![]() | 151 × 359(31 KB) | Oleg Alexandrov(留言 | 贡献) | {{Information |Description=Illustration of wavefronts after passing through a [:en:lens (optics)|lens]] |Source=self-made with MATLAB |Date=~~~~~ |Author= Oleg Alexandrov |Permission=see below |other_versions= }} |
您不可以覆盖此文件。
文件用途
没有页面使用本文件。
全域文件用途
以下其他wiki使用此文件:
- ar.wikipedia.org上的用途
- ast.wikipedia.org上的用途
- be.wikipedia.org上的用途
- bn.wikipedia.org上的用途
- bs.wikipedia.org上的用途
- ckb.wikipedia.org上的用途
- cs.wikiversity.org上的用途
- cv.wikipedia.org上的用途
- en.wikipedia.org上的用途
- en.wikiversity.org上的用途
- es.wikipedia.org上的用途
- es.wikiversity.org上的用途
- eu.wikipedia.org上的用途
- fa.wikipedia.org上的用途
- fi.wikipedia.org上的用途
- fr.wikipedia.org上的用途
- fr.wikibooks.org上的用途
- fy.wikipedia.org上的用途
- ga.wikipedia.org上的用途
- he.wikipedia.org上的用途
- hi.wikipedia.org上的用途
- hr.wikipedia.org上的用途
- hy.wikipedia.org上的用途
- id.wikipedia.org上的用途
- ko.wikipedia.org上的用途
- lt.wikipedia.org上的用途
- lv.wikipedia.org上的用途
- ml.wikipedia.org上的用途
- mn.wikipedia.org上的用途
- nl.wikipedia.org上的用途
- pa.wikipedia.org上的用途
- ru.wikipedia.org上的用途
- sh.wikipedia.org上的用途
- si.wikipedia.org上的用途
- sl.wikipedia.org上的用途
- sr.wikipedia.org上的用途
- sv.wikipedia.org上的用途
查看此文件的更多全域用途。