optiland绘制光学系统的点列图

optiland绘制光学系统的点列图 文章目录基本概念测试评估指标SpotDiagram基本概念点列图是光学系统对物点发出光束在像面上截痕的几何投影就数学意义来说是入瞳坐标到像面坐标的非线性映射。设入瞳平面坐标为( x p , y p ) (x_p, y_p)(xp​,yp​)经光学系统的光线追迹后光线在像面上的交点坐标为( x i , y i ) (x_i, y_i)(xi​,yi​)点列图即为该映射函数在离散入瞳采样点上的集合S { ( x i ( k ) , y i ( k ) ) ∣ ( x p ( k ) , y p ( k ) ) ∈ Pupil , k 1 , 2 , ⋯ , N } S\left\{\left(x_i^{(k)},y_i^{(k)}\right)\bigg\vert \left(x_p^{(k)},y_p^{(k)}\right)\in \text{Pupil}, k1,2,\cdots,N \right\}S{(xi(k)​,yi(k)​)​(xp(k)​,yp(k)​)∈Pupil,k1,2,⋯,N}其中N NN为追迹光线的总数。点列图的形态直接反映了映射函数的非线性畸变程度即系统的几何像差。测试下面以最简单的消色差胶合透镜为例其结构如下图中共针对三个物点进行成像不同颜色的光线代表不同的波长。这三个点的点列图如下图中可见位于光轴上的点偏差很小几乎在微米量级随着光线逐渐偏离光轴点列图就越分散。绘图代码如下。importmatplotlib.pyplotaspltfromoptiland.samplesimportCementedAchromat lensCementedAchromat()lens.draw()plt.show()fromoptiland.analysisimportSpotDiagram spotSpotDiagram(lens)spot.view()plt.show()评估指标Optiland 在生成点列图时会计算两个关键的统计指标来量化成像质量即均方根半径(RMS Radiius)和几何半径(GEO Radius)二者定义为R r m s 1 N ∑ k 1 N [ ( x i ( k ) − x c ) 2 ( y i ( k ) − y c ) 2 ] R g e o max ⁡ k ( x i ( k ) − x c ) 2 ( y i ( k ) − y c ) 2 \begin{aligned} R_{rms}\sqrt{\frac{1}{N}\sum^N_{k1}\left[ \left(x^{(k)}_i-x_c \right)^2 \left(y^{(k)}_i-y_c\right)^2 \right]}\\ R_{geo}\max_k\sqrt{\left(x^{(k)}_i-x_c \right)^2 \left(y^{(k)}_i-y_c\right)^2} \end{aligned}Rrms​Rgeo​​N1​k1∑N​[(xi(k)​−xc​)2(yi(k)​−yc​)2]​kmax​(xi(k)​−xc​)2(yi(k)​−yc​)2​​式中x c , y c x_c, y_cxc​,yc​为所有光线交点坐标的算术平均值代表光斑能量的几何中心x c 1 N ∑ k 1 N x i ( k ) , y c 1 N ∑ k 1 N y i ( k ) x_c\frac{1}{N}\sum^N_{k1}x^{(k)}_i,\quad y_c\frac{1}{N}\sum^N_{k1}y^{(k)}_ixc​N1​k1∑N​xi(k)​,yc​N1​k1∑N​yi(k)​spot.rms_spot_radius() [[np.float64(0.0007160560338966489), np.float64(0.00030044346069136213), np.float64(0.0009093546785235328)], [np.float64(0.0062009419004590465), np.float64(0.006478127436073068), np.float64(0.005863964781384811)], [np.float64(0.013193574022352729), np.float64(0.013478204609735837), np.float64(0.012854624142347826)]] spot.geometric_spot_radius() [[np.float64(0.0012658074102686746), np.float64(0.0005373629890794854), np.float64(0.0012884677713641153)], [np.float64(0.011884205191984965), np.float64(0.012174297091610109), np.float64(0.011247689194430421)], [np.float64(0.024474576587270702), np.float64(0.02457540430166505), np.float64(0.02356916788532737)]] SpotDiagram【SpotDiagram】即为optiland中的点列图类在上面的示例中只输入了一个optic类型的参数这也是唯一必须输入的参数其他参数如下【fields】指定需要计算点列图的视场默认为’all’【wavelengths】指定参与光线追迹的波长默认为’all’【num_rings】定义入瞳采样的环数默认为6上面的点列图中边缘处可以很清晰地看到内外共六圈【distribution】定义光线在入瞳内的空间分布拓扑hexapolar’为六角形极坐标网格能均匀覆盖圆形入瞳避免矩形网格在角落的无效采样uniform’为均匀笛卡尔网格‘random’: 随机分布适用于蒙特卡洛公差分析。【coordinates】定义点列图坐标系的参考框架默认’local’以该视场的主光线或质心为原点如果选’global’则以像面的全局坐标系原点为参考点。【reference】定义计算 RMS 和 GEO 半径时的中心点默认’chief_ray’表示以主光线与像面的交点为中心也可以选’centroid’表示以光斑的能量质心为中心。