Image:Lens and wavefronts.gif

Un article de Wikipédia, l'encyclopédie libre.

Ci-dessous, retrouvez page de description du fichier provenant de Commons.
Description

Illustration of wavefronts after passing through a [:en:lens (optics)

Source

self-made with MATLAB

Date

00:49, 24 November 2007 (UTC)

Author

Oleg Alexandrov

Permission
(Reusing this image)

see below



Public domain I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide.

In case this is not legally possible:
I grant anyone the right to use this work for any purpose, without any conditions, unless such conditions are required by law.


Afrikaans | Alemannisch | Aragonés | العربية | Asturianu | Български | Català | Česky | Cymraeg | Dansk | Deutsch | Eʋegbe | Ελληνικά | English | Español | Esperanto | Euskara | Estremeñu | فارسی | Français | Galego | 한국어 | हिन्दी | Hrvatski | Ido | Bahasa Indonesia | Íslenska | Italiano | עברית | Kurdî / كوردی | Latina | Lietuvių | Latviešu | Magyar | Македонски | Bahasa Melayu | Nederlands | ‪Norsk (bokmål)‬ | ‪Norsk (nynorsk)‬ | 日本語 | Polski | Português | Ripoarisch | Română | Русский | Shqip | Slovenčina | Slovenščina | Српски / Srpski | Svenska | ไทย | Tagalog | Türkçe | Українська | Tiếng Việt | Walon | ‪中文(简体)‬ | ‪中文(繁體)‬ | zh-yue-hant | +/-

[edit] MATLAB source code

% 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 = 3.5; 
   R2 = R1;
 
  % 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

Historique du fichier

Cliquer sur une date et une heure pour voir le fichier tel qu’il était à ce moment-là

Date et heureDimensionsUtilisateurCommentaire
actuel25 novembre 2007 à 08:35183×356 (35 Kio)Oleg Alexandrov (tweak)
24 novembre 2007 à 06:10171×356 (33 Kio)Oleg Alexandrov (tweak)
24 novembre 2007 à 06:09171×356 (33 Kio)Oleg Alexandrov (tweak)
24 novembre 2007 à 02:56171×359 (33 Kio)Oleg Alexandrov (tweak, same license)
24 novembre 2007 à 02:53171×359 (32 Kio)Oleg Alexandrov (tweak)
24 novembre 2007 à 02:49151×359 (31 Kio)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= }})

La page ci-dessous contient cette image :