当前位置: 首页 > news >正文

用optiland绘制光扇图

文章目录

    • 光扇图的基本概念
    • 测试
    • RayFan

光扇图的基本概念

Ray Fan即光扇图,是光学设计中用于分析一维截面上几何像差的核心工具。与点列图展示二维平面上的光斑分布不同,Ray Fan 将三维的光线追迹结果降维,通过二维曲线直观地展示横向像差(Transverse Ray Aberration)随入瞳坐标的变化关系。

设入瞳归一化坐标为H HH,范围是[ − 1 , 1 ] [-1,1][1,1],光线在像面上的实际交点高度为y ′ y'y,参考点的高度为y 0 ′ y'_0y0,则光扇图的纵坐标定义为

ϵ y ( H ) = y ′ ( H ) − y 0 ′ \epsilon_y(H)=y'(H)-y'_0ϵy(H)=y(H)y0

由于相差具有方向性,光扇图通常分为两组曲线

  • 切向/子午光扇图,其采样方向为入瞳的Y YY轴方向(子午面内),反映子午面内的光线聚焦情况。主要受球差、彗差、像散和场曲影响。
  • 弧矢光扇图,采样方向:入瞳的X XX轴方向(垂直于子午面),反映弧矢面内的光线聚焦情况。主要受像散和场曲影响,通常不受彗差影响(因为彗差在弧矢面上是对称的)。

测试

下面以最简单的消色差胶合透镜为例,其结构如下

图中共针对三个物点进行成像,不同颜色的光线代表不同的波长。这三个点的RayFan图如下

图中可见,位于光轴上的点比较理想,随着光线逐渐偏离光轴,光扇图的倾斜度越来越大,表示离焦增强。绘图代码如下

importmatplotlib.pyplotaspltfromoptiland.samplesimportCementedAchromat lens=CementedAchromat()lens.draw()plt.show()fromoptiland.analysisimportRayFan rf=RayFan(lens)rf.view()plt.show()

光扇图并不是直线,而是存在一定的弯曲,这种过原点的三次曲线一般表示球差。下面创建一个更加质朴的单透镜,可以看到明显的球差

绘图代码如下

importnumpyasnpfromoptilandimportoptic lens=optic.Optic()lens.surfaces.add(index=0,thickness=np.inf)lens.surfaces.add(index=1,thickness=7,radius=20.0,is_stop=True,material="N-SF11")lens.surfaces.add(index=2,thickness=23.0)lens.surfaces.add(index=3)lens.set_aperture(aperture_type="EPD",value=20)lens.fields.set_type(field_type="angle")lens.fields.add(y=0)lens.wavelengths.add(value=0.55,is_primary=True)lens.draw(num_rays=10)plt.show()rf=RayFan(lens)rf.view()plt.show()

RayFan

【RayFan】是optiland中的光扇图类,在上面的示例中,只输入了一个optic类型的参数,这也是唯一必须输入的参数,其他参数如下

  • 【fields】指定需要计算点列图的视场,默认为’all’
  • 【wavelengths】指定参与光线追迹的波长,默认为’all’
  • 【num_points】入瞳直径方向上的采样点数,默认256,决定了曲线的平滑度。256 个点足以精确描绘高阶像差(如五级球差)引起的微小波动。如果曲线出现锯齿状,可适当增加此值。
http://www.gsyq.cn/news/1640962.html

相关文章:

  • 存储芯片千问千答第3篇:存储芯片中test mode是什么意思?
  • 小学期第四周记录
  • UVa 521 Gossiping
  • Evaluating Multimodal Large Language Models on Core Music Perception Tasks
  • AI 全栈开发实战(15):全系列总结——从零到一做一个真正的 AI 产品
  • 新e选烤火罩pH值[主里料](C类)GB/T 7573—2009 判定符合
  • 向量数据库选型与实战 —— Milvus、Qdrant、Chroma 深度对比与最佳实践
  • 星露谷物语自动化革命:5大必备模组彻底改变你的农场生活 [特殊字符]
  • 分布式事务解决方案全景:从 2PC 到 Saga,每种方案的适用场景与落地要点
  • 微调LLM提升工具调用能力的ShareGPT数据格式
  • opc.ua在NET6.0的使用
  • 我的 AI 辅助开发工具链 2026 版——从 IDE 到 Agent,效率提升了多少?
  • 解放双手:用Python为Windows微信注入自动化能力
  • Gemini 复制到 word 格式问题频繁出现?AI 导出鸭一站式修复排版错乱难题
  • 2026 AI 开发者生存指南(7):10 个 AI 开发者必备的开源项目导航
  • 浏览器用户画像大屏搭建:从静态布局到交互联动(附完整代码)
  • Linux中Mamba的有效安装
  • Anthropic 宣布 7 月 8 日起 Claude 用户需人脸实名认证,AI 匿名时代终结
  • Python之strudelpy包语法、参数和实际应用案例
  • Codex怎么删除会话?Codex怎么删除历史聊天?解决Codex启动卡顿问题教程
  • 锂离子电池过压保护与BQ2920设计要点解析
  • 终极指南:如何在5分钟内安装Deforum扩展并创建Stable Diffusion动画
  • C语言 冒泡排序
  • STM32F439ZG与MC6470 IMU的运动控制开发指南
  • 第四届链博会首次设立 AI 专区,676 家企业参展——AI 不再只是前沿科技了
  • 千问文档怎么导出?AI 导出鸭一站式搞定多格式导出难题
  • 企业级FastAPI后端模板搭建(五)初始化数据
  • [MAF工作流框架揭秘-10]基于Open-Telemetry的调用链跟踪
  • 零基础可视化看板搭建:从交互到下钻全流程
  • 智谱 GLM-5.2 凌晨上新,Code Arena 全球第一意味着什么?