Optometrika 透镜成像模拟


MATLAB 透镜成像 Optometrika,此程序是模拟透镜等一系列光学元件成像的MATLAB代码,使用MATLAB面向对象的程序设计方法,用户可以自行调用类来获得想要的模拟效果。
资源截图
代码片段和文件信息
classdef Aperture < Surface
    % APERTURE defines a circular opening
    %
    % Member functions:
    %
    % a = Aperture( r D ) - object constructor
    % INPUT:
    % r - 1x3 position vector
    % D - 2x1 vector (inner diameter outer diameter)
    % OUTPUT:
    % a - aperture object
    %
    % a.display() - displays the aperture a information
    %
    % draw() - draws the aperture a in the current axes
    % 
    % a.rotate( rot_axis rot_angle ) - rotate the aperture
    % INPUT:
    %   rot_axis - 1x3 vector defining the rotation axis
    %   rot_angle - rotation angle (radians)
    % 
    % Copyright: Yury Petrov 2016
    %
    
    properties
        D = [ 1; 2 ]
    end
    
    methods
        function self = Aperture( ar aD )
            self.glass = { ‘air‘ ‘soot‘ };
            if nargin == 0
                return;
            end
            self.r = ar;
            if size( aD 1 ) < size( aD 2 )
                aD = aD‘;
            end
            self.D = aD;
            if size( self.D 1 ) == 1 || self.D(2) < self.D(1)
                error( ‘Outer radius has to be larger than the inner radius‘ );
            end
        end
        
        function display( self )
            fprintf( ‘Position:  [%.3f %.3f %.3f]
‘ self.r );
            fprintf( ‘Orientation:  [%.3f %.3f %.3f]
‘ self.n );
            fprintf( ‘Diameter in:  %.3f
‘ self.D(1) );
            fprintf( ‘Diameter out:  %.3f
‘ self.D(2) );
        end
        
        function h = draw( self color )
            nrad = 2;
            rad = linspace( self.D(1) / 2 self.D(2) / 2 nrad );
            nang = 100;
            ang = linspace( 0 2 * pi nang );
            [ ang rad ] = meshgrid( ang rad );
            
            y = rad .* cos( ang );
            z = rad .* sin( ang );
            x = zeros( size( y ) );
            S = [ x(:) y(:) z(:) ];
            
            % rotate and shift
            if self.rotang ~= 0
                S = rodrigues_rot( S self.rotax self.rotang );
            end
            x(:) = S( : 1 ) + self.r( 1 );
            y(:) = S( : 2 ) + self.r( 2 );
            z(:) = S( : 3 ) + self.r( 3 );
            
            % draw
            c = 0.25 * ones( size( x 1 ) size( x 2 ) 3 );
            h = surf( x y z c ‘EdgeColor‘ ‘none‘ ‘FaceLighting‘‘phong‘ ‘FaceColor‘ ‘interp‘ ...
                ‘AmbientStrength‘ 0.25 ‘SpecularStrength‘ 0.25 );
        end
    end
    
end


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-04-21 09:02  Optometrika
     目录           0  2017-04-21 09:03  __MACOSXOptometrika
     目录           0  2017-04-21 09:03  __MACOSX
     文件       15408  2017-03-26 17:40  Optometrika说明.docx
     文件        1343  2016-11-30 22:55  Optometrikalicense.txt
     文件         216  2016-11-30 22:55  Optometrika\__MACOSXOptometrika._surface_sag.m
     文件         216  2016-11-30 22:55  Optometrika\__MACOSXOptometrika._rodrigues_rot.m
     文件         216  2016-11-30 22:55  Optometrika\__MACOSXOptometrika._refrindx.m
     文件         216  2016-11-30 22:55  Optometrika\__MACOSXOptometrika._lensmakers_formula.m
     文件         216  2016-11-30 22:55  Optometrika\__MACOSXOptometrika._lens_dims.m
     文件         216  2016-11-30 22:55  Optometrika\__MACOSXOptometrika._hist2.m
     目录           0  2017-03-26 17:35  OptometrikaOptometrika
     文件        6148  2016-11-30 22:55  OptometrikaOptometrika.DS_Store
     文件        2479  2016-11-30 22:55  OptometrikaOptometrikaAperture.m
     文件        3257  2016-11-30 22:55  OptometrikaOptometrikaAsphericLens.m
     文件       11112  2017-03-28 20:47  OptometrikaOptometrikaBench.m
     文件        3296  2016-11-30 22:55  OptometrikaOptometrikaConeLens.m
     文件        2843  2016-11-30 22:55  OptometrikaOptometrikaCylinderLens.m
     文件       12094  2016-11-30 22:55  OptometrikaOptometrikaEye.m
     文件        7091  2016-11-30 22:55  OptometrikaOptometrikaFresnelLens.m
     文件        3438  2016-11-30 22:55  OptometrikaOptometrikaGeneralLens.m
     文件        3880  2016-11-30 22:55  OptometrikaOptometrikaLens.m
     文件        4016  2016-11-30 22:55  OptometrikaOptometrikaPlane.m
     文件        3062  2016-11-30 22:55  OptometrikaOptometrikaREADME.txt
     文件       53504  2016-11-30 22:55  OptometrikaOptometrikaRays.m
     文件        3797  2016-11-30 22:55  OptometrikaOptometrikaRetina.m
     文件        3883  2016-11-30 22:55  OptometrikaOptometrikaScreen.m
     文件       11063  2016-11-30 22:55  OptometrikaOptometrikaSellmeier.glass.refr
     文件        1920  2016-11-30 22:55  OptometrikaOptometrikaSurface.m
     文件         756  2016-11-30 22:55  OptometrikaOptometrikaaspheric.m
     文件        1675  2016-11-30 22:55  OptometrikaOptometrikaasphlens.m
............此处省略180个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)