📄 opt_plotoptics.htm
字号:
<HTML> <HEAD> <TITLE>/</TITLE> <META NAME="GENERATOR" CONTENT="HTML-TOOLBOX "> </HEAD> <BODY bgcolor="#FFFFF0"> <HR WIDTH="100%"></P> <CENTER><P><FONT COLOR="#000000"><FONT SIZE=+3>Cross-linked m-file</FONT></FONT></P></CENTER> <CENTER><P><FONT COLOR="#000000"><FONT SIZE=+1></FONT></FONT></P></CENTER> <CENTER><P><FONT COLOR="#000000"><FONT SIZE=+2>opt_plotoptics.m</FONT></FONT></P></CENTER> <CENTER><P><FONT COLOR="#000000"><FONT SIZE=+1>Located in:</FONT></FONT></P></CENTER> <CENTER><P><FONT COLOR="#000000"><FONT SIZE=+1>/home/bjorn/matlab/Optical_bench</FONT></FONT></P></CENTER> <P><HR WIDTH="100%"></P> <P><FONT COLOR="#000000"><FONT SIZE=+2>Function synopsis</FONT></FONT></P> <P><FONT COLOR="#000000"><FONT SIZE=+1> ok = opt_plotoptics(opt_el) </FONT></FONT></P> <P><HR WIDTH="100%"></P> <P><FONT COLOR="#000000"><FONT SIZE=+2>Function comments</FONT></FONT></P> <pre> % % OPT_PLOTOPTICS - Plot the optical system. % Blue - apertures % Green - lens surfaces % Red - screens % Orange - prisms % Yellow - grids </pre> <P><HR WIDTH="100%"></P> <P><FONT COLOR="#000000"><FONT SIZE=+1>m-files called by opt_plotoptics.m</FONT></FONT></P> <UL> <LI><A HREF ="opt_rot.htm">opt_rot</A></LI> </UL> <P><HR WIDTH="100%"></P> <P><FONT COLOR="#000000"><FONT SIZE=+1>m-files that call opt_plotoptics.m</FONT></FONT></P> <UL> <LI><A HREF ="Contents.htm">Contents</A></LI> <LI><A HREF ="opt_exempel.htm">opt_exempel</A></LI> </UL> <P><HR WIDTH="100%"></P> <P><FONT COLOR="#000000"><FONT SIZE=+1>All the cross references in the source m-code of opt_plotoptics.m</FONT></FONT></P> <pre> function ok = opt_plotoptics(opt_el) % ok = opt_plotoptics(opt_el) % % OPT_PLOTOPTICS - Plot the optical system. % Blue - apertures % Green - lens surfaces % Red - screens % Orange - prisms % Yellow - grids % Version: 1.0 % Copyright: Bjorn Gustavsson 20020430 hstate = ishold; hold on for i = 1:length(opt_el), switch opt_el(i).type case 'aperture' ex = [1 0 0]; n = opt_el(i).n; dz = opt_el(i).diameter; z = (-(dz/1.9).^2):(dz/1.85).^2/25:(dz/1.9).^2; z = sign(z).*((abs(z).^.5)); y = z; [y,z] = meshgrid(y,z); ia = find(y.^2+z.^2<(dz/2)^2); x = zeros(size(y)); r = [x(:),y(:),z(:)]; if asin(norm(cross(ex,n)))~=0 for j = 1:length(r) r(j,:) = <A HREF ="opt_rot.htm">opt_rot</A>(r(j,:),cross(ex,n),asin(norm(cross(ex,n)))); end end x(:) = r(:,1)+opt_el(i).r(1); y(:) = r(:,2)+opt_el(i).r(2); z(:) = r(:,3)+opt_el(i).r(3); y(ia) = nan; surf(x,y,z,zeros(size(z))),shading flat case 'grid' ex = [1 0 0]; n = opt_el(i).n; dz = opt_el(i).dxdydz(3); dy = opt_el(i).dxdydz(2); z = (-dz/2):(dz/2):(dz/2); y = (-dy/2):(dy/2):(dy/2); [y,z] = meshgrid(y,z); x = zeros(size(y)); r = [x(:),y(:),z(:)]; if asin(norm(cross(ex,n)))~=0 for j = 1:length(r) r(j,:) = <A HREF ="opt_rot.htm">opt_rot</A>(r(j,:),cross(ex,n),asin(norm(cross(ex,n)))); end end x(:) = r(:,1)+opt_el(i).r(1); y(:) = r(:,2)+opt_el(i).r(2); z(:) = r(:,3)+opt_el(i).r(3); surf(x,y,z,.6*ones(size(z))),shading flat plot3([opt_el(i).r(1) opt_el(i).r(1)+opt_el(i).e_slits(1)],... [opt_el(i).r(2) opt_el(i).r(2)+opt_el(i).e_slits(2)],... [opt_el(i).r(3) opt_el(i).r(3)+opt_el(i).e_slits(3)],'k','linewidth',6) case 'lens' ex = [1 0 0]; n = opt_el(i).n; dz = opt_el(i).diameter; z = (-(dz/2)):(dz/2).^2/25:(dz/2); y = z; [y,z] = meshgrid(y,z); ia = find(y.^2+z.^2>=(dz/2)^2); y(ia) = nan; ib = find(y.^2+z.^2<(dz/2)^2); x = zeros(size(y)); x(ib) = -(sign(opt_el(i).r_o_curv)*(opt_el(i).r_o_curv^2- ... y(ib).^2-z(ib).^2).^.5 + ... -sign(opt_el(i).r_o_curv)*(opt_el(i).r_o_curv^2-dz^2).^.5); if sign(opt_el(i).r_o_curv) > 0 x(ib) = x(ib)-min(x(ib)); else x(ib) = x(ib)-max(x(ib)); end r = [x(:),y(:),z(:)]; if asin(norm(cross(ex,n)))~=0 for j = ib, r(j,:) = <A HREF ="opt_rot.htm">opt_rot</A>(r(j,:),cross(ex,n),asin(norm(cross(ex,n)))); end end x(:) = r(:,1)+opt_el(i).r(1); y(:) = r(:,2)+opt_el(i).r(2); z(:) = r(:,3)+opt_el(i).r(3); surf(x,y,z,0.5*ones(size(z))),shading flat case 'prism' ex = [1 0 0]; n = opt_el(i).n; dz = opt_el(i).dxdydz(3); dy = opt_el(i).dxdydz(2); z = (-dz/2):(dz/2):(dz/2); y = (-dy/2):(dy/2):(dy/2); [y,z] = meshgrid(y,z); x = zeros(size(y)); r = [x(:),y(:),z(:)]; if asin(norm(cross(ex,n)))~=0 for j = 1:length(r) r(j,:) = <A HREF ="opt_rot.htm">opt_rot</A>(r(j,:),cross(ex,n),asin(norm(cross(ex,n)))); end end x(:) = r(:,1)+opt_el(i).r(1); y(:) = r(:,2)+opt_el(i).r(2); z(:) = r(:,3)+opt_el(i).r(3); surf(x,y,z,0.7*ones(size(z))),shading flat case 'screen' ex = [1 0 0]; n = opt_el(i).n; dz = opt_el(i).dxdydz(3); dy = opt_el(i).dxdydz(2); z = (-dz/2):(dz/2):(dz/2); y = (-dy/2):(dy/2):(dy/2); [y,z] = meshgrid(y,z); x = zeros(size(y)); r = [x(:),y(:),z(:)]; if asin(norm(cross(ex,n)))~=0 for j = 1:length(r) r(j,:) = <A HREF ="opt_rot.htm">opt_rot</A>(r(j,:),cross(ex,n),asin(norm(cross(ex,n)))); end end x(:) = r(:,1)+opt_el(i).r(1); y(:) = r(:,2)+opt_el(i).r(2); z(:) = r(:,3)+opt_el(i).r(3); surf(x,y,z,ones(size(z))),shading flat case 'slit' ex = [1 0 0]; n = opt_el(i).n; dz = opt_el(i).dxdydz(3)+2; dy = opt_el(i).dxdydz(2)+2; z = (-dz/2):(dz/2):(dz/2); y = (-dy/2):(dy/2):(dy/2); [y,z] = meshgrid(y,z); x = zeros(size(y)); r = [x(:),y(:),z(:)]; if asin(norm(cross(ex,n)))~=0 for j = 1:length(r) r(j,:) = <A HREF ="opt_rot.htm">opt_rot</A>(r(j,:),cross(ex,n),asin(norm(cross(ex,n)))); end end x(:) = r(:,1)+opt_el(i).r(1); y(:) = r(:,2)+opt_el(i).r(2); z(:) = r(:,3)+opt_el(i).r(3); surf(x,y,z,.9*ones(size(z))),shading flat ex = [1 0 0]; n = opt_el(i).n; dz = opt_el(i).dxdydz(3); dy = opt_el(i).dxdydz(2); z = (-dz/2):(dz/2):(dz/2); y = (-dy/2):(dy/2):(dy/2); [y,z] = meshgrid(y,z); x = zeros(size(y)); r = [x(:),y(:),z(:)]; if asin(norm(cross(ex,n)))~=0 for j = 1:length(r) r(j,:) = <A HREF ="opt_rot.htm">opt_rot</A>(r(j,:),cross(ex,n),asin(norm(cross(ex,n)))); end end x(:) = r(:,1)+opt_el(i).r(1); y(:) = r(:,2)+opt_el(i).r(2); z(:) = r(:,3)+opt_el(i).r(3); plot3(x,y,z,'k'),shading flat plot3(x',y',z','k'),shading flat otherwise feval(opt_el(i).fcn2,[1 1 1],'p',opt_el(i).arglist); end end if ~hstate hold off end </pre> <P><HR WIDTH="100%"></P> <P><I><FONT COLOR="#0000FF"><FONT SIZE=+1>Written by B. Gustavsson 13:27 29/1 2003 <IMG SRC = "file:/home/bjorn/matlab/Local/Tools/htmltool/gifs/copyright.gif" ></FONT></FONT></I></P> <P><I><FONT COLOR="#0000FF"><FONT SIZE=+1>E-mail:</B><A HREF = "mailto:bjorn@irf.se">bjorn@irf.se</A></H4></FONT></FONT></I></P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -