Skip to content

dariussullivan/raytrace

Repository files navigation

Raytrace - A Non-sequential optical ray-tracing framework

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

  1. 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.
  2. Correctly handles polarisation
  3. Support for dispersion including a comprehensive library of glass-types (taken from refractive-index.info)
  4. An interactive user-interface with 3D model/ray rendering through VTK. Tracing is performed "live".
  5. A modest selection of optic-types including singlet and achromatic doublet lenses (with AR coating), plane-mirrors, ellipsoidal mirrors, prisms
  6. Experimental support for dispersion-analysis (i.e. ultra-fast optics)
  7. (Currently broken) support for STEP export of model and rays, via PythonOCC library.

There are still a few "big" features missing:

  1. A point-spread function. I'll implement this eventually...
  2. STEP Import for full opto-mechanical integration
  3. Better design for STEP export
  4. Any for of useful documentation :(

Requirements

Raytrace requires:

  • python-3.6 (older versions work on 2.7)
  • numpy
  • traits / traitsui
  • Cython
  • Mayavi (for TVTK) / VTK
  • (Optionally) PythonOCC - for STEP export
  • (Optionally) Chaco / Enable - for integrating line-plots into the UI

Installation

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

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages