ImagingPath.fieldStop

raytracing.ImagingPath.fieldStop(self)

The field stop is the aperture that limits the image size (or field of view) It is possible to have finite diameter elements but still an infinite field of view and therefore no Field stop. In fact, if only a single element has a finite diameter, there is no field stop (only an aperture stop). The limit is arbitrarily set to maxHeight.

Returns:

fieldStop – the output is the (position, diameter) of the field stop. If there are no elements of finite diameter (i.e. all optical elements are infinite in diameters), then there is no field stop and no aperture stop in the system and their sizes are infinite.

Return type:

(float,float)

Examples

>>> from raytracing import *
>>> path = ImagingPath() # define an imaging path
>>> path.objectHeight=6
>>> # use append() to add elements to the imaging path
>>> path.append(Space(d=20))
>>> path.append(Lens(f=20,diameter=5,label="f=20"))
>>> path.append(Space(d=30))
>>> path.append(Lens(f=10,diameter=10,label="f=10"))
>>> path.append(Space(d=10))
>>> print('The position of field stop is:', path.apertureStop()[0])
The position of field stop is: 20.0
>>> print('The diameter of field stop is:',path.apertureStop()[1])
The diameter of field stop is: 5

Also, as the following, you can use display() to follow the rays in the imaging path and view the aperture stop and field stop. The second lens in the imaging path (f=10) is the field stop.

>>> path.display()
../../../_images/apertureStop.png

Notes

Strategy: We want to find the exact height from the object where it is blocked by an aperture (which will become the field stop). We look for the point that separates the “unblocked” ray from the “blocked” ray.

To do so, we take a ray at various heights starting at y=0 from object with a finite increment “dy” and aim at center of pupil (i.e. chief ray from that height) until ray is blocked. If it is not blocked, increase dy and increase y by dy. When it is blocked, we turn around and increase by only half the dy, then we continue until it is unblocked, turn around, divide dy by 2, etc… This rapidly converges to the position at which the ray is blocked, which is the field stop half diameter. This strategy is better than linearly going through object heights because the precision can be very high without a long calculation time.