Optical Layout Example -- Fizeau Interferometer

Contents

Basic Example

% Use "sub-shapes" to specify parameters for the launch,
% the lenses, the beamsplitter, the mirrors, and the absorber,
% but do not draw anything yet.
LAUNCH      = davinci( 'optical_layout.beam_launch', 'Position',           [0 0], ...
                                                     'Direction',          [1 0], ...
                                                     'ConeAngle',             20, ...
                                                     'BeamLineWidth',          2 );
L1          = davinci( 'optical_layout.lens',      'LineWidth',              2 );
L2          = davinci( 'optical_layout.lens',      'LineWidth',              2, ...
                                                   'DistanceToFocus',        3 );
LENS_NODRAW = davinci( 'optical_layout.lens',      'DistanceToFocus',       20, ...
                                                   'DrawFlag',           false );  % Do not draw lens on 2nd pass.
BS          = davinci( 'optical_layout.beamsplitter', 'HeightOversizeFactor', 1.5, ...
                                                      'LineWidth',              2 );
M1          = davinci( 'optical_layout.mirror',       'LineOrRectangle', 'rectangle', ...
                                                   'FaceVertexCData', [.3 .3 .3; .5 .5 .5; .3 .3 .3; .5 .5 .5], ...
                                                   'FaceColor',        'interp' );
ABSORBER    = davinci( 'optical_layout.absorber',  'Thickness',              .2 );
% Assemble the first beam ("beam A").  Use the ">" operator to merge
% the "sub-shape" parameters with the travel distances.  Use the "/"
% operator to tilt the beamsplitter.  Do not draw anything yet.
BEAM_A = LAUNCH > 20 > L1 > 7 > M1 > 7 > LENS_NODRAW > 15 > (BS/-45);
% Draw the layout for beam path #1.
[h_a,next_beam_launch] = davinci( 'optical_layout', 'Layout', BEAM_A );
daspect([1 1 1])   % Set aspect ratio to 1:1.
% The final two segments on each "edge ray" are redundant.  The
% ray segments were drawn twice - once as the beam traveled right and
% once as the beam traveled left.  For purists, we delete the
% redundant segments, though this should not affect the drawing.
delete( h_a.edge_ray_1((end-1):end) );
delete( h_a.edge_ray_2((end-1):end) );
% Draw the layout for beam path #2, which starts from the beamsplitter.
hold on
BEAM_B = next_beam_launch(1) > 7 > (M1/45) > 2 > L2 > 5 > ABSORBER;
davinci( 'optical_layout', 'Layout', BEAM_B );
% Insert the reference flat.  We do this step manually.
patch( [25 26 26 25], [6 6 -6 -6], 'b', 'FaceAlpha', 0.5 )
hold off