【光学】Matlab模拟几何光学中的球差、彗差、像散、场曲四种像差

1 内容介绍

模拟几何光学中的球差、彗差、像散、场曲四种像差。

    其主要功能为:(1) 绘制球差的光路图与分析图;

                           (2) 绘制彗差的光路图与分析图;

                           (3) 绘制像散的光路图;

                           (4) 绘制场曲的光路图;

                           (5) 绘制像散的光路图;

2 仿真代码

%{ 

球差的光路图的绘制

功能:绘制球差的光路图

物理量:

n1,n2:介质折射率;

r/mm:球面镜半径;

L/mm:物方截距;

L2/mm:像方截距;

L_cut/mm:截止像面与透镜中心之间的距离;

h/mm:入射高度;

h_new/mm:截至像面上出射光线的高度;

U1:物方孔径角;

U2:像方孔径角;

I1:入射角;

I2:折射角;

%}

%% 绘制前处理

%%%%%%%%%%%%%

clc;                         %清空历史窗口中的内容

clear;                       %清除变量

close all;                   %关闭所有图形窗口

%% 数据输入

%%%%%%%%%%%

n1=1; n2=1.33;               %设置介质的折射率

r=-200;                      %球面镜半径

L=-300;                      %物方截距

h=-70:1:70;                %入射高度及步长

L_cut=300;                   %确定截止像面

%% 光线追迹

%%%%%%%%%%%

%大L公式追迹光线

U1=atan(h/L);                %物方孔径角

I1=asin((L-r)*sin(U1)/r);    %入射角

I2=asin(n1*sin(I1)/n2);      %折射角

U2=U1+I1-I2;                 %像方孔径角

L2=r*(1+sin(I2)./sin(U2));   %像方截距

h_new=tan(U2)*L_cut+h;       %确定截止像面上光线高度

%% 光路图绘制

%%%%%%%%%%%%%

[~,num]=size(h);                              %计算矩阵h大小   

figure;                                       %创建窗口

c=jet(num);

set(gcf,'color',[0.9,0.9,0.9]);              %窗口背景颜色更改

set(gcf,'position',[250 200 1100 500]);      %窗口大小调整

subplot('position',[0.001 0.18 0.7 0.7]);    %创建子图1

%入射光线及出射光线的绘制

for i=1:20:num

     colorData=[c(i,1),c(i,2),c(i,3)];                  %颜色矩阵

     line([L,0],[0,h(i)],'color',colorData);            %入射光线

     line([0,L_cut],[h(i),h_new(i)],'color',colorData); %出射光线

end

hold on;

%光轴等直线绘制

line([L-50,330],[0,0],'linestyle','--','color','k','linewidth',1); %光轴

quiver(0,0,0,130,'MaxHeadSize',0.5,'LineWidth',1.5,'color','k');   %透镜1

quiver(0,0,0,-130,'MaxHeadSize',0.5,'LineWidth',1.5,'color','k');  %透镜2

title('\itSpherical Aberration Path Diagram','FontSize',13);       %标题

axis off;                                                          %隐轴

%% 像差放大图绘制

%%%%%%%%%%%%%%%%%

subplot('position',[0.72 0.35 0.18,0.4])                 %创建子图2

set(gca,'color',[0.95,0.95,0.95]);                       %子图背景颜色更改

for i=1:20:num                                           %出射光线绘制

     colorData=[c(i,1),c(i,2),c(i,3)];                  %颜色矩阵

     line([L,0],[0,h(i)],'color',colorData);            %入射光线

     line([0,300],[h(i),h_new(i)],'color',colorData);   %出射光线

end

xlim([263,268]);                                   %x坐标范围(实现放大功能)

ylim([-3,3]);                                      %y坐标范围(实现放大功能)

text(264,2,'\itenlarged view','FontSize',13);            %标注放大图

grid on;                                                 %打开网格

3 运行结果

4 参考文献

[1]秦华, 冯东太, QIN,等. Matlab在几何光学仿真实验中的应用[J]. 物理实验, 2017, 37(11):5.

​[2]王永瑛, 张光明, 李小丽,等. 用MATLAB编程模拟光学实验[J]. 城市建设, 2009.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MATLAB模拟绘制 彩虹形成时 光线 入射到水珠折射 -反射 -再折射的现象 目录 MATLAB模拟绘制彩虹形成时 光线入射到水珠折射 -反射 -再折射的现象 1 前言 3 光的 知识 4 光的反射定律 4 反射定律 4 特殊情况 4 光的折射 5 基本定义 5 折射定律 5 折射率 6 彩虹的形成 7 形成原理 7 为什么彩虹是弯的? 10 Baggins [email protected] MATLAB绘制光路图思路绘制光路图思路 ................................................................................................................................................................ 13 绘制基础模拟平面 绘制基础模拟平面............................................................................................................................................................................ 13 绘制初始垂直光线 绘制初始垂直光线............................................................................................................................................................................ 14 改变角度循环刷新绘图 改变角度循环刷新绘图............................................................................................................................................................ 15 完整代码 完整代码............................................................................................................................................................................................................................ 18 运行效果 运行效果............................................................................................................................................................................................................ 18 全部代码 全部代码............................................................................................................................................................................................................ 18

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值