Skip to content

kmdouglass/cherry

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

925 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cherry Ray Tracer

Interactive and accessible optical system design for tabletop optics.

This software is in development and has not yet stabilized. Do not expect backwards compatibility with previously-saved designs.

An f-theta scan lens as viewed in Cherry

Table of Contents

  1. Quickstart
  2. Getting Help
  3. Project Description
  4. Roadmap
  5. License
  6. Acknowledgements

Quickstart

  1. Go to https://kmdouglass.github.io/cherry/.
  2. Select one of the examples from the menu at the top of the screen.
  3. Open one or more of the output windows such as the spot diagram or paraxial summary.
  4. Vary any of the specs, such as surface radius of curvature, and watch the outputs change.

Getting Help

Q&A, Feature Requests, and Bug Reports

If you have a question about how to use Cherry, then please do not hesitate to start a Q&A discussion. Feature requests can be made through the discussions space as well.

To report a bug, please open an issue with the Bug label.

Development

Instructions for developing the app and library may be found in CONTRIBUTING.md.

Project Description

What is the Cherry Ray Tracer?

Cherry is a tool for researchers, experimentalists and optical designers working on tabletop setups that answers the following questions:

  1. What is the effect of changing/rotating/tilting a component in an optical assembly such as a microscope?
  2. What are the basic parameters of this lens or system, such as focal length and system size?
  3. How can I easily share a design with others?

Cherry focuses on accessibility and interactivity to answer these questions effectively and within a research laboratory setting. The software is accessible on any device with a browser, including a smartphone. Calculations are performed and their results displayed immediately whenever a system parameter changes.

Is Cherry for me?

Cherry was designed primarily for microscopists, researchers, and educators working in optics labs on tabletop setups. As such, its goals are different from other optics software packages.

  • If you want an open source and comprehensive Python tool for general purpose optical design, including non-sequential ray tracing, consider using Optiland.
  • If you want an open source, practical, and lightweight ray tracing system in Python, consider RayOptics, which heavily inspired Cherry's initial design.
  • If you want to perform physical optics propagation using an open source Python tool focused on telescope design, consider POPPY.
  • If you want non-sequential ray tracing for graphics rendering, then Cherry (and probably optical design software in general) is not for you.
  • If you want professional lens and system design capabilities, consider industry standards such as CODE V, Zemax OpticStudio, OSLO, or FRED.

Cherry might be for you if:

  • you want an interactive tool that performs basic optical system calculations, produces real-time visualizations, and allows you to easily share designs with others,
  • you are an educator and want a free application for teaching optical engineering concepts, or
  • you code in Rust and want a library for optical systems design.

Roadmap

Now

  • Decenters/rotational offsets on surfaces
  • Lens view for manipulating systems by lens instead of by surface
  • Decenters/rotational offsets on lenses
  • Help Wanted Annotate coordinate axes, the optical axis, and other elements in the cross-section view
  • Galvo plus scan lens example

Next

  • Encode designs into URLs and enable sharing via tiny URLs
  • Cooke triplet example
  • Help Wanted mdbook to serve as the app's user documentation
  • Surface coatings
  • Systems with beam splitters

Later

License

Copyright (c) 2024-2026, ECOLE POLYTECHNIQUE FEDERALE DE LAUSANNE, Switzerland, Laboratory of Experimental Biophysics (LEB).

The cherry-rs library is licensed under the GNU Lesser General Public License v3.0 or later (LGPL-3.0-or-later). The compiled cherry GUI binary is licensed under the GNU General Public License v3.0 or later (GPL-3.0-or-later).

Acknowledgements

About

Interactive and accessible optical system design for tabletop optics.

Resources

License

Contributing

Stars

Watchers

Forks

Contributors

Languages