Currently, the idea is to allow the user to do very simple optical ray casting to see if a layout of optical components is sound. Any heavy duty optical analysis will need to be done with another package (e.g., Zemax or CodeV).
We have incorporated the notion of compound rays which may interact with optical elements. The optical elements are currently restricted to the following types:
In order to interact with rays, optical elements must be incorporated into optical path objects which are simple sequential arrays of optical elements.
ray( Pt, Vec )
- Returns
- <Polyline> Create a non-compound light ray.
- Pt
- <Point> Origin of ray.
- Vec
- <Vector> Direction of ray.
ray( PolylineArgs )
- Returns
- <Polyline> Create a compound light ray.
- PolylineArgs
- <Polyline> | <Points...> Gives the legs of a compound ray.
rayStartOrg( Ray )
- Returns
- <Point> The origin of the first leg of a ray.
- Ray
- <Polyline> Constructed from ray( ... ) above.
rayStartDir( Ray )
- Returns
- <Vector> The direction of the first leg of a ray.
- Ray
- <Polyline> Constructed from ray( ... ) above.
rayEndOrg( Ray )
- Returns
- <Point> The origin of the last leg of a ray.
- Ray
- <Polyline> Constructed from ray( ... ) above.
rayEndDir( Ray )
- Returns
- <Vector> The direction of the last leg of a ray.
- Ray
- <Polyline> Constructed from ray( ... ) above.
reverseRay( Ray )
- Returns
- <Polyline> Construct a ray by reversing the points of the polyline that represents the original ray.
- Ray
- <Polyline> Constructed from ray( ... ) above.
fireRay( Ray, OpticalPath )
- Returns
- <Polyline> Construct a, possibly compound, ray that results from firing the input ray at the given optical path.
- OpticalPath
- <Group> Represents an optical path constructed from opticalPath( ... ) below.
Polygons for optical elements are currently restricted to convex, planar shapes. The polygons should not have degenerate sides (i.e., repeated vertices). No checking is done for these conditions.
The behavior of these elements is as follows:
Surface normals for mirrors obey Alpha_1 modeling conventions. Normals point to the inside of mirrors, and a ray must be on the outside of a mirror in order to be reflected by it. If, from a ray's perspective, the points of a mirror's polygon appear to be clockwise, then the ray is outside the mirror (i.e., the mirror normal points away).
mirror( ApertureArgs )
- Returns
- <Polygon> | <Circle> Construct a planar mirror element.
- ApertureArgs
- <Circle> | <Polyline> | <Points...> Gives the shape and orientation of the mirror.
aperture( ApertureArgs )
- Returns
- <Polygon> | <Circle> Construct a planar aperture element.
- ApertureArgs
- <Circle> | <Polyline> | <Points...> Gives the shape of the aperture.
obstruction( ApertureArgs )
- Returns
- <Polygon> | <Circle> Construct a planar obstruction element.
- ApertureArgs
- <Circle> | <Polyline> | <Points...> Gives the shape of the obstruction.
opticalPath( OpticalElements... )
- Returns
- <Group> Construct an optical path from a series of optical elements.
- OpticalElements...
- <OpticalElement> A series of optical elements.