Optical Calculations and Analysis
Paraxial Design Model
Overview
Paraxial layout operations are handled via the
ParaxialModel
. This enables model manipulation via the \(y-\overline{y}\) or \(\omega-\overline{\omega}\) diagrams.Optical layout is facilitated by being able to use paraxial properties to solve for constructional parameters.
Ray Tracing
Ray Tracing Overview
Real Ray Tracing is a fundamental operation in optical design and analysis. Ray-optics has a layered architecture for the ray trace engine. The low level interface can be used directly or through higher level interfaces.
The low level
trace_raw()
function is the building block of the ray trace system, based on Spencer and Murty’s General Ray-Tracing Procedure. The first argument to this function is an iterator that returns a tuple of interface, gap, refractive index, transform to the next interface and a z direction. This information is sufficent to satisfy the input requirements of the ray trace algorithm.The
Interface
API is used extensively by the ray trace. The following methods are required by the ray trace:
intersect()
: intersect input ray withInterface
normal()
: return surface normal at input point
phase()
: return output direction and path incrementThe following attributes of
Interface
are used:
interact_mode
: reflect | transmit | dummy (no action)
decenter
:DecenterData
for theInterface
, if anyRay tracing is two operations, repeated until reaching the image. They are:
find the next ray-interface intersection
scatter the ray based on the interface properties
Sequential models of optical systems make the first operation very straightforward. No search for the next closest surface is performed, rather, the sequence of the interfaces is used to determine the next surface interface to calculate. Sequential models also have only one dominant optical behavior per interface. This means there will be a one to one relationship between the incident and exiting rays from an interface.
Sequential ray tracing in ray-optics by default is configured to ray trace the
seq_model
of theOpticalModel
. Thetrace()
function is the low level interface to the ray trace system. It’s arguments include aSequentialModel
and the ray starting point, direction and wavelength.The
trace_raw()
function is the building block of the ray trace system. The first argument to this function is an iterator that returns a tuple of interface, gap, refractive index, transform to the next interface and a z direction. Python provides a generator capability that could be used to programmatically generate a sequence of interfaces, for example for a ghost image analysis, without explicitly constructing a list of interfaces. The methodpath()
inSequentialModel
returns a Python generator that is used to drive the ray tracing process.