raypier_optics icon indicating copy to clipboard operation
raypier_optics copied to clipboard

A raytracing toolkit for optical design

========================================================= Raypier - A Non-sequential optical ray-tracing framework

Raypier is a non-sequential ray-tracing framework for modelling optical systems. Its main features are:

#. It's pretty fast. The tracing algorithms are written in Cython (i.e. C) and use efficient data-structures for handling many thousands of rays. #. Correctly handles polarisation #. Sequential and non-sequential tracing. #. Support for dispersion including a comprehensive library of glass-types (taken from refractive-index.info) and diffraction-gratings #. Point Spread Function (PSF) and E-Field evaluation by summation of of Gaussian modes. #. Paraxial Gaussian mode evaluation covers generally astigmatic modes. #. Tracing support for conics section, general aspherics (conic + polnomial) and 2D polynomial surfaces. #. Zurnike polynomial surface distortions. #. An interactive user-interface with 3D model/ray rendering through VTK. Tracing is performed "live". #. A modest selection of optic-types including singlet and achromatic doublet lenses (with AR coating), plane-mirrors, ellipsoidal mirrors, prisms #. STEP model/trace export for integration with external CAD systems

There are still a few "big" features missing:

#. The documentation is not comprehensive (yet).

Requirements

Raypier requires:

  • python >= 3.6
  • numpy
  • scipy
  • traits / traitsui
  • Cython
  • Mayavi (for TVTK) / VTK
  • (Optionally) pythonocc_core - for STEP export
  • (Optionally) Chaco / Enable - for integrating line-plots into the UI

Installation

The best way to install and run Raypier is using a Conda environment.

#. Install miniconda (or the full Anaconda distribution) #. Create a fresh conda-environment using the environment.yml file included in this raypier repo.