---
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!