This translates the Mathematica code in "General formula for bi-aspheric singlet lens design free of spherical aberration." [1] to Python using SymPy. The intention was to reproduce the surfaces presented in the paper, and then use OpenSCAD (via SolidPython) to model the lenses in 3D.
Note this repo is in an unfinished, WIP state. The basic equations have been converted and appear to work for the cases in the paper, but the OpenSCAD implementation is incomplete.
The equations also do not appear to work quite correctly for the lenses presented in "Single Lens Telescope" [2]. This might be an artifact of incorrect translation of the original Mathematica code. The lenses in [2] assume tₐ and tᵦ are infinite (collimated beams), so the code may also need to be adjusted using the equations in Figure 10 of [1] (e.g. calculating the limit when tₐ → −∞ for fᵢ , rᵢ , zᵢ )
First Surface | Plot |
---|---|
Table 1 Reference | |
Flat | |
Spherical | |
Parabolic | |
Cosine |
[1] González-Acuña, Rafael G., and Héctor A. Chaparro-Romo. "General formula for bi-aspheric singlet lens design free of spherical aberration." Applied optics 57.31 (2018): 9341-9345. (PDF)
[2] González-Acuña, Rafael Guillermo, Héctor Alejandro Chaparro-Romo, and Julio Cesar Gutíerrez-Vega. "Single lens telescope." arXiv preprint arXiv:1903.11129 (2019). (PDF)