Skip to content

Latest commit

 

History

History
219 lines (188 loc) · 14.5 KB

README.md

File metadata and controls

219 lines (188 loc) · 14.5 KB

Tests Documentation Status codecov Maintainability Stars License: MIT

Table of Contents
  1. Introduction
  2. Documentation
  3. Installation
  4. Functionalities
  5. Learning Guide
  6. Roadmap
  7. License
  8. Contact and Support

Introduction

Optiland is a Python-based, open-source optical design and analysis framework. With a simple and intuitive Python interface, Optiland enables the design, optimization, and analysis of complex optical systems, from paraxial and real raytracing to polarization, coatings, and wavefront analyses. It supports 2D/3D visualization, comprehensive tolerancing, local and global optimization, and freeform optics, among other features. Built on the speed of NumPy and SciPy, Optiland delivers computational efficiency and flexibility across a wide range of optical tasks.

Get started immediately with Optiland Tutorial #1, see the extensive Learning Guide, or read the full documentation at Read the Docs.

U.S. patent 2959100

Python code to generate this 3D visualization:

from optiland.samples.objectives import ReverseTelephoto
lens = ReverseTelephoto()
lens.draw3D()

Documentation

The full documentation for Optiland is hosted on Read the Docs.

Explore the Example Gallery for a wide range of lens designs and analyses created with Optiland.

See the Developer's Guide for an extensive overview of the architecture and design of Optiland and the API Reference for detailed documentation of all public classes, methods, and functions.

Installation

You can install the package using pip. To do so, follow these steps:

  1. Open a terminal or command prompt.

  2. Run the following command to install the package:

    pip install optiland

Functionalities

  • Lens entry
  • 2D/3D visualization
  • Paraxial and aberration analyses
  • Real and paraxial ray tracing, including aspherics and freeforms
  • Polarization ray tracing
  • Real analysis functions (spot diagrams, ray aberration fans, OPD fans, distortion, PSF, MTF, etc.)
  • Glass and material catalogue (based on refractiveindex.info)
  • Design optimization (local and global)
  • Wavefront and Zernike analysis
  • Tolerancing, including sensitivity analysis and Monte Carlo methods
  • Coating and surface scatter (BSDF) analysis
  • Zemax file import

The code itself is in constant flux and new functionalities are always being added.

Learning Guide

This guide gives a step-by-step approach to learning how to use Optiland.

  1. Introduction to Optiland
  2. Real Raytracing & Analysis
  3. Aberrations
  4. Optical Path Difference (OPD), Point Spread Functions (PSF) & Modulation Transfer Function (MTF)
  5. Optimization
  6. Coatings & Polarization
  7. Advanced Optical Design
  8. Tolerancing
  9. Lens Catalogue Integration
  10. Extending Optiland
  11. Machine Learning in Optical Design - note that these notebooks are hosted in the LensAI repository

Roadmap

Optiland is continually evolving to provide new functionalities for optical design and analysis. Below are some of the planned features and enhancements we aim to implement in future versions:

  • GUI (based on Qt Quick)
  • Multiple Configurations (Zoom Lenses)
  • Thin Film Design and Optimization
  • Diffractive Optical Elements
  • Jones Pupils
  • Apodization Support
  • Additional Freeforms (Superconic, Zernike, etc.)
  • Image Simulation
  • Huygens PSF & MTF
  • Interferogram Analysis
  • Additional Tutorials/Examples
  • Non-sequential ray tracing
  • Insert your idea here...

Community Contributions

We welcome suggestions for additional features! If there's something you'd like to see in Optiland, feel free to open an issue or discussion.

License

Distributed under the MIT License. See LICENSE for more information.

Contact and Support

If you have questions, find a bug, have suggestions for new features, or need help, please open an issue in the GitHub repository. This ensures that your concern is visible to others, can be discussed collaboratively, and helps build a public archive of solutions for similar inquiries in the future.

While I prefer issues as the primary means of communication, you may also contact me via email if necessary.

Kramer Harrison - kdanielharrison@gmail.com