rayoptics.parax.firstorder module

Functions to support paraxial ray tracing a sequential optical model

class ParaxData(ax_ray, pr_ray, fod)

Bases: tuple

ax_ray

axial marginal ray data, y, u, i

fod

instance of FirstOrderData

pr_ray

chief ray data, y, u, i

class FirstOrderData[source]

Bases: object

Container class for first order optical properties

All quantities are based on paraxial ray tracing. The last interface is the image-1 interface.

opt_inv

optical invariant

power

optical power of system

efl

effective focal length

fl_obj

object space focal length, f

fl_img

image space focal length, f’

pp1

distance from the 1st interface to the front principle plane

ppk

distance from the last interface to the rear principle plane

pp_sep

distance from the front principle plane to the rear principle plane

ffl

front focal length, distance from the 1st interface to the front focal point

bfl

back focal length, distance from the last interface to the back focal point

fno

focal ratio at working conjugates, f/#

m

transverse magnification

red

reduction ratio, -1/m

n_obj

refractive index at central wavelength in object space

n_img

refractive index at central wavelength in image space

obj_dist

object distance

img_dist

paraxial image distance

obj_ang

maximum object angle (degrees)

img_ht

image height

enp_dist

entrance pupil distance from 1st interface

enp_radius

entrance pupil radius

exp_dist

exit pupil distance from last interface

exp_radius

exit pupil radius

obj_na

numerical aperture in object space

img_na

numerical aperture in image space

listobj_str()[source]
list_first_order_data()[source]

list the first order properties

paraxial_trace(path, start, start_yu, start_yu_bar)[source]

perform a paraxial raytrace of 2 linearly independent rays

get_parax_matrix(p_ray, q_ray, kth, n_k)[source]

Calculate transfer matrix and inverse from 1st to kth surface.

compute_first_order(opt_model, stop, wvl, src_model=None)[source]

Returns paraxial axial and chief rays, plus first order data.

compute_principle_points(path, oal, n_0=1.0, n_k=1.0)[source]

Returns paraxial p and q rays, plus partial first order data.

Parameters:
  • path – an iterator containing interfaces and gaps to be traced. for each iteration, the sequence or generator should return a list containing: Intfc, Gap, Trfm, Index, Z_Dir

  • oal – overall geometric length of the gaps in path

  • n_0 – refractive index preceding the first interface

  • n_k – refractive index following last interface

Returns:

(p_ray, q_ray, (efl, fl_obj, fl_img, pp1, ppk, ffl, bfl))

  • p_ray: [ht, slp, aoi], [1, 0, -]

  • q_ray: [ht, slp, aoi], [0, 1, -]

  • power: optical power of system

  • efl: effective focal length

  • fl_obj: object space focal length, f

  • fl_img: image space focal length, f’

  • pp1: distance from the 1st interface to the front principle plane

  • ppk: distance from the last interface to the rear principle plane

  • pp_sep: distance from the front principle plane to the rear

    principle plane

  • ffl: front focal length, distance from the 1st interface to the

    front focal point

  • bfl: back focal length, distance from the last interface to the back

    focal point

list_parax_trace_fotr(opt_model, reduced=False)[source]

list the paraxial axial and chief ray data

This function lists the paraxial data as calculated by paraxial_trace() for the seq_model.

list_parax_trace(ax_ray, pr_ray, seq_model, reduced=False)[source]

list the ray data for the input paraxial rays.

specsheet_from_parax_data(opt_model, specsheet)[source]

update specsheet to contents of opt_model, while preserving inputs