--- permalink: opticspy_cn date: 2024-01-01 --- [Opticspy](https://github.com/Sterncat/opticspy)是笔者读书期间开发的Python开源光学模块,有几个核心模块,一是raytracing模块,二是Zernike多项式模块功能,三是其他易用功能模块。 ![](https://cdn.jsdelivr.net/gh/Sterncat/BlogPics/OpticsWiki/Opticspy-1.png) 项目网站 [Opticspy project page](http://opticspy.org) 最早是2015年开始学习Zernike系数以及干涉时,使用Python验证一些学习到的内容,后来觉得既然自己会使用Python,也会光学,当时互联网上有一些Matlab的光学开源库,但是并没有python的,那我何不做一个开源的Python光学模块? 主要开发集中在2015夏天到2016夏天一年期间,现在Github上有400多个star,也算行业里一点小小的认可,也说明了Github上Python光学模块的缺少。2016年后主要进行了一些维护工作,Github上的一些contributor还对该模块进行了升级,使其满足了Python 3的使用环境,并修复了一系列bug。2019年笔者还跟当时Zemax的CTO Sanjay Gangadhara做过交流。 **当时的开发的两个思考点和难点在于:** - 面向对象的开发,如何使其有足够的易用性,让其作为一个真正的模块存在,可以对输入的格式有比较自由的选择,这部分主要是在Zernike模块上有比较多的体现。但是当时毕竟不是专业程序员,对于面向对象编程理解还是不够深刻。同时,对于光学工作中面型分析的需求理解也不够深刻。如果未来有机会,是希望重写这部分,并把它开发成未来自己工作可用的一个模块。 - Raytracing模块的开发:当时笔者刚入门光学设计和codev,主要是想使用Python来自己试试可不可以实现raytracing,最终用总计1000行左右的代码实现了这个小模块,包括可以画图。虽然分析和优化功能没有,但是对于自己理解ray tracing确实有很大帮助。 ### 以下是Opticspy的一些核心模块展示和例子 #### 1. Real ray tracing and Lens Design: - ##### [Example 1: Basic functions introduction](http://sterncat.github.io/files/Real_Ray_Tracing.html) - ##### [Example 2: A double gauss lens example](http://sterncat.github.io/files/Double_Gauss.html) - ##### [Example 3: Build a Petzval lens with codev seq file](http://sterncat.github.io/files/CodeV_Convertor.html) - ##### [Example 4: Build a microscope lens with codev seq file](http://sterncat.github.io/files/Microscope.html) #### 2. Zernike Polynomial Methods - ##### [Basic Zernike Polynomial Methods](http://sterncat.github.io/files/Zernike_Polynomial_Method.html) - ##### [Zernike Polynomial Fitting Methods](http://sterncat.github.io/files/Zernike_Polynomial_Fitting_Method.html) - ##### [Orthonormal Rectangular Polynomials](http://sterncat.github.io/files/Orthonormal_Rectangular_Polynomials.html) #### 3. Interferometer and Testing Methods - ##### [Basic Interferometer Methods](http://sterncat.github.io/files/Interferometer_Method.html) - ##### [Phase shift interferometer and surface rebuild](http://sterncat.github.io/files/PSI.html) - ##### [Hartmann Test Patterns](http://sterncat.github.io/files/Hartmann_Test.html) #### 4. [Wave Propagation and Aberration Methods](http://sterncat.github.io/files/Diffraction_Method.html) #### 5. [Lens aberration, Jones matrix and gauss beam methods](http://sterncat.github.io/files/Other_functions.html) #### 6. 一些基于opticspy开发的小程序或者gif图: - ##### [A Zernike Polynomial GUI app based on opticspy and PyQt5](https://github.com/Sterncat/zernikeapp) - ##### [Zernike Surface gif show](https://faster-than-light.net/files/zernikegif.gif) ### 安装方法 - 使用pip install: $ pip install opticspy - 或者[在此下载](http://sterncat.github.io/files/opticspy-0.2.1.tar.gz): $ python2.7 setup.py install ### How to use使用方法 > [!tip] import opticspy And just have fun with it!