AbbeVNumber

AbbeVNumber is a rule name that specifies the Abbe V-number, Vd = (nd-1) / (nf-nc), and is a measure of the chromatic aberration of an optical material.
Here, nf, nd, and nc are the refractive index values for three different wavelengths specified by the SpectralRegion option. See also: FindGlassNumbers, SpectralRegion, GlassCodeFunction, GlassMap, MeanDispersion, GlassCodeNumber, and PartialDispersionRatio.

ABCDMatrix

ABCDMatrix[component, {{M1, M2}, {M3, M4}}, options] is a generic building block that produces scattered rays according to the ABCD matrix law.
ABCDMatrix is also a rule that specifies ABCD-matrix data.
See also: ExitPosition, ThinLens, ThickLens, and ABCDOptic.

ABCDOptic

ABCDOptic[abcdmatrix, aperture, thickness, label, options] denotes a two-surfaced planar component that scatters rays using the abcdmatrix specified with an entrance plane and an exit plane separated by the indicated thickness.
The thickness parameter specifies either a number or a surface function of two variables. ABCDOptic is intended for simple two-dimensional ray-tracing procedures. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: ABCDMatrix, ThinLens, and ThickLens.

AbsoluteSizeComponentOrientation

AbsoluteSizeComponentOrientation is a an option of ShowComponentOrientation, that determines the absolute length of lines. SizeComponentOrientation is suppressed by AbsoluteSizeComponentOrientation. See also: ShowSystem, ShowComponentOrientation.

AbsoluteSizeRayOrientation

AbsoluteSizeRayOrientation is a an option of ShowRayOrientation that determines the absolute length of lines. SizeRayOrientation is suppressed by AbsoluteSizeRayOrientation. See also: ShowSystem, ShowRayOrientation.

AbsoluteSizeSurfaceOrientation

AbsoluteSizeSurfaceOrientation is a an option of ShowSurfaceOrientation that determines the absolute length of lines. SizeSurfaceOrientation is suppressed by AbsoluteSizeSurfaceOrientation. See also: ShowSystem, ShowSurfaceOrientation.

AbsoluteStepSize

AbsoluteStepSize -> increment/Automatic gives the absolute rate of increment used to step through numeric solutions.

AbsoluteStepSize works in tandom with StepSize. AbsoluteStepSize -> Automatic indicates that the relative StepSize will be used instead. See also: StepSize.

Absorption

Absorption[component, options] is a generic building block that creates a ray-tracing function to absorb the intensity of rays hitting the optical surface.

Acetone

Acetone specifies the use of an acetone liquid medium at 20 degrees Celsius.
The refractive index model for Acetone is most suitable for the wavelength range of .43 microns to .66 microns. Acetone has a density of 0.791, relative to the density of water.

AcidResistance

AcidResistance is a database rule name that specifies the acid resistance of a material.

ActiveComponent

ActiveComponent -> True is an option that designates whether the component contains active surfaces where rays can interact.
ActiveComponent -> False is used when constructing inactive components made up of only graphical information. ActiveComponent is an option of ComponentFoundation.

ActiveRegion

ActiveRegion is an option of Component functions that determines which side of the optical surface shall be modeled for approaching rays by ModelIntensity and ModelPolarization.
For single surfaces, ActiveRegion -> Automatic or 0 is active on both sides of the surface. ActiveRegion -> -1 specifies rays approaching the surface from the negative optical axis, while ActiveRegion -> 1 indicates rays approaching from the positive optical axis.
For double surfaces, ActiveRegion -> Automatic or 0 specifies the region between the two surfaces.

ActiveScattering

ActiveScattering -> Automatic/True/False is an option of the ScatterRays that indicates whether seed-scattering sources are dynamically refreshed during the trace.
ActiveScattering has an important effect on randomized seed sources, which use MonteCarlo -> True/Stratified, since each scatter site will display an identical scattering behavior with ActiveScattering -> False. ActiveScattering -> Automatic uses the True setting with the MonteCarlo -> True/Stratified seed-source settings and False otherwise. An additional option, PropagateSystem -> False, can be used to conserve memory during TurboTrace calculations by inhibiting ActiveScattering -> False for PropagateSystem. See also: MonteCarlo.

Add

Add -> {newobjects, {coordinatepoints}} is an option of AnalyzeSystem/ShowSystem based on mouse-generated coordinatepoints that inserts new components and rays within an existing system.
Add uses a list of coordinatepoints taken with the mouse from the rendered graphics to indicate the final location of the inserted objects. A second coordinate point is used to indicate the previous element of the optical system. Object-sequence positions may also be used to specify objects instead of coordinatepoints. Add uses the two-dimensional coordinate system given in PlotType.
See also: DrawSystem, PlotType, ToleranceSelection, ToleranceDoubleClick, SnapGrid, SnapGridOffset, Move, MoveReflected, Arrange, Rotate, Copy, Constrain, Snap, Align, Transform, Swap, Remove, Identify.

AddDeflection

AddDeflection[component, options] is a generic building block used to append elements to Deflections.


AddDeflection -> {buildingblockname...} creates Deflections with buildingblockname[component, options] for every buildingblockname element. These deflections are appended to those inside component, but not connected to any of the surfaces. AddDeflection passes options and component as list of rules to genetic.

See also: AddSurface, InsertDeflection, RemoveDeflection, and RemoveSurface.

AddLabels

AddLabels -> {{listoflabels},{listofpositions}} is a PlugIn for ShowSystem that adds one or more labels to the system rendering.
AddLabels uses two lists to indicate the label names and label positions. See also: ShowSystem, MoveLabels, RenameLabels, and ShowLabels.

AddRandomRayTilt

AddRandomRayTilt[component, {{x1,x2},{y1,y2}}, options] is a generic building block that introduces a random factor to the tilt direction of each propagated ray.
Here, the {{x1,x2},{y1,y2}} parameters specify the angular ranges of the ray tilt fluctuations along the horizontal and vertical directions. When the random behavior is symmetric about the surface normal, then the single-valued full-angles x and y can be specified in place of {x1,x2} and {y1,y2}. When the random factor is non-isotropic and only varies in x, then the y parameters can be omitted. Three examples of this are: 90, {90,90}, and {{-45,45},{-45,45}}.
The Lambertian option is also used by ScatterRays. For Lambertian->True, the scattered rays are oriented about the surface normal. For Lambertian->False, the scattered rays are oriented with the incoming ray direction.
See also: Lambertian, LimitScatter, and LimitByReflection.

AddSurface

AddSurface[component, options] is a genetic building block used to insert surfaces between existing ones.

The new surfaces are not related to a deflection and they are not an entrance surface, but they are inserted in ConfinedPaths. AddSurface -> value controls the insertion place, AffectedSurfaces -> value between which surfaces to insert. Allowed values in (the list) AddSurface are between 0 and 1, describing the fraction of the distance between adjacent surfaces. Alternatively a surface can be directly specified. AffectedSurfaces can be a list of numbers or a word value (except slot specifications). SimpleSurface -> True tries to generate simple shapes for the new surfaces. AddSurface passes options to ComponentFoundation, ComponentRendering and Confine.

See also: InsertDeflection, RemoveDeflection, AddDeflection, AffectedSurfaces, SortSurfaces, SimpleSurface, and RemoveSurface.

AddSurfaceRoughness

AddSurfaceRoughness[component, {{x1,x2}, {y1,y2}}, options] is a genetic building block that introduces a random factor to the surface normals of one or more optical surfaces in the component.
Here, the {{x1,x2}, {y1,y2}} parameters specify the angular ranges of the tilt fluctuations along the horizontal and vertical directions. When the random behavior is symmetric about the surface normal, then the single-valued full-angles x and y can be specified in place of {x1,x2} and {y1,y2}. When the surface roughness is non-isotropic and only varies in x, then the y parameters can be omitted. Three examples of this are: 90, {90,90}, and {{-45,45},{-45,45}}.
AddSurfaceRoughness inserts a Random function within the SurfaceNormalFunction.

AffectedSurfaces

AffectedSurfaces is an option of BuildComponent that specifies which surfaces of Component are to be affected by a newly introduced ray-tracing function.
AffectedSurfaces carries a list of numbers and word values that denotes the surfaces inheriting a new ray-tracing function trait. As an example, AffectedSurfaces -> {1} specifies that the first surface function slotted in Surfaces is to inherit the new ray-tracing function trait.
If a list element of AffectedSurfaces is a list, it specifies a pathnumber, pathslot and deflectionslot inside ConfinedPaths. The new deflection is inserted in the list of DeflectionNumber at position deflectionslot, but only in pathslot slot of pathnumber path of ConfinedPaths. This type of AffectedSurfaces is used for example to put a grating on a refractive surface.
See also: AllDeflections, AllSurfaces, FirstSlot, NotFirstSlot, LastSlot, NotLastSlot, and IndependentSurfaces.

Air

Air denotes the use of an air medium with a refractive index of 1.00027 at the 0.5876 micron wavelength. The refractive index data were calculated for a temperature of 20 degrees Celsius, a pressure of 100 kPa, 50% air humidity, and 450 ppm of carbon dioxide. The refractive index model for Air is most suitable for the wavelength range of 0.3 microns to 1.7 microns. The data for this Air model was provided by Dr. ir. Hedser van Brug.

Align

Align -> {coordinatepoints} is an option of AnalyzeSystem/ShowSystem based on mouse-generated coordinatepoints that automatically aligns the components and rays along an optical axis. The axis is three-dimensional and defined by the closest neighboring objects, or two-dimensional and defined as points.
Align uses a list of coordinatepoints taken with the mouse from the rendered graphics to indicate the start point of the axis, the objects getting aligned, and the end point of the axis. An optional point before the last one specifies the position along the axis. Object-sequence positions may also be used to specify objects instead of coordinatepoints.
Align does essentially the same as Snap, but it uses another order of coordinate points.
See also: DrawSystem, PlotType, ToleranceSelection, ToleranceDoubleClick, SnapGrid, SnapGridOffset, Move, MoveReflected, Arrange, Rotate, Copy, Constrain, Snap, Transform, Add, Swap, Remove, Identify.

AlkaliResistance

AlkaliResistance is a database rule name that specifies the alkali resistance of a material.

AllCreatedAmplitudes

AllCreatedAmplitudes = {{ax, ay, az},..} is used within HeldDeflectionKernel functions to specify new electric-field vectors of one or more outgoing rays.
In general, ax, ay, and az are complex numbers that indicate absolute field directions.  AllCreatedAmplitudes is generated by some HeldDeflectionKernel functions to specify electric-field information. TurboTrace later converts the reported AllCreatedAmplitudes into Polarization for storage in TurboRays.
See also: RayAmplitude and Polarization.

AllCreatedRays

AllCreatedRays is a value of TakeFrom, AddTo, and ReplaceFor and specifies that all Ray objects returned by previous ray-tracing function calculations are passed to or returned from DeflectionFunction.
If AllCreatedRays is listed by TakeFrom, then AllCreatedRays is included as an input to the ray-tracing function calculation. If AllCreatedRays is listed by AddTo, then the elements of AllCreatedRays replace the previous AllCreatedRays object.
Currently, only Transmission and Hole are designed to use TakeFrom -> AllCreatedRays. See also: NewRay, CreatedRay, ChangedRay, OriginalRay, AddTo, and TakeFrom.

AllDeflections

AllDeflections is a value of AffectedSurfaces that denotes that the added genetic ray-tracing function slot number is interlaced throughout the listing of DeflectionNumber values.
In general, ray-tracing function traits are added to a surface by appending the ray-tracing function position (within Deflections) to the affected DeflectionNumber value within ConfinedPaths.
See also: AllSurfaces, FirstSlot, NotFirstSlot, LastSlot, NotLastSlot, AffectedSurfaces, and IndependentSurfaces.

AllowZeroRayLength

AllowZeroRayLength is an unauthorized rule of Ray that specifies whether the ray segment is permitted to have a zero length during a surface-ray intersection calculation.
AllowZeroRayLength is set to True when the ray is crossing between two distinct optical surfaces. AllowZeroRayLength is set to False during a repeated surface interaction. AllowZeroRayLength is only created when RayHistory is invoked. See also: RayHistory

AllSurfaces

AllSurfaces is a value of AffectedSurfaces of BuildComponent that specifies that the added ray-tracing function slot number is appended to all DeflectionNumber values.
In general, ray-tracing function traits are added to a surface by appending the ray-tracing function position (within Deflections) to the affected DeflectionNumber value within ConfinedPaths.
See also: AllDeflections, FirstSlot, NotFirstSlot, LastSlot, NotLastSlot, AffectedSurfaces, and IndependentSurfaces.

AnalyzeSystem

AnalyzeSystem[system, options] takes a system of light sources and optical elements defined by a mixed list of Source and Component objects, traces the rays through the components, and renders the results according to the PlotType, RayChoice, ShowRange, and ColorView options.
AnalyzeSystem is an alias name for DrawSystem. See also PropagateSystem, DrawSystem, TurboTrace, and TurboPlot.

AnamorphicPrisms

AnamorphicPrisms[aperture, bigedgethickness, firstangle, prismspacing, secondangle, exitoffset, label, options] specifies a pair of wedge-shaped prism elements that are commonly used to correct the asymmetric beam shape of a laser diode- from elliptical to near circular in shape.
AnamorphicPrisms is created with the first prism surface positioned at the origin with a tilt given by firstangle and the second prism located offset along the positive x-axis with the lateral offset given by exitoffset and tilted by secondangle. The aperture argument may denote a circle, rectangle, or polygon depending on the number and type of elements listed by it. The bigedgethickness specifies the thickness of the larger prism edge. The firstangle and secondangle parameters denote the amount of tilt in the x-y plane given to the first and second prism elements. The prismspacing argument gives the gap between the two prism elements. Finally, the exitoffset parameter indicates the distance between the last prism's exit surface center and the x-axis (incoming optical axis). The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: Prism, WedgePrism, DovePrism, PentaPrism, and RhomboidPrism.

AngleTolerance

AngleTolerance is a database rule name that specifies the manufacturing angular tolerances of an optical component expressed in units of +- seconds of arc. See also: ThicknessTolerance and DimensionalTolerance.

Anisotropic

Anisotropic is a value of Theory to characterize an anisotropic medium.

AntireflectionCoating

AntireflectionCoating is part of the pattern ModelCoating[AntireflectionCoating, substrate, reflectivity] that is used to define a coating which reflects on every substrate reflectivity percent.

ApertureQ

ApertureQ[x] tests whether x is a valid aperture specification for an optical element. The result is True or False.

ApertureStop

ApertureStop[aperture, holeaperture, label, options] and ApertureStop[aperture, holeaperture, thickness, label, options] denotes a planar component with a hole created in its middle.
ApertureStop is created with its first surface centered about the origin. The aperture and holeaperture arguments may denote a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

AppendGraphics

AppendGraphics -> primitiveslist is an option of ShowSystem that gives a list of graphics to be rendered after those of ShowSystem. See also: PrependGraphics.

Arrange

Arrange -> {coordinatepoints} is an option of AnalyzeSystem/ShowSystem based on mouse-generated coordinatepoints that rearranges the ordering of components and rays in the optical system.
Arrange uses a list of coordinatepoints taken with the mouse from the rendered graphics to specify a new sequence order for the selected objects. Normally, the first coordinate point indicates the point of insertion to the list of objects. If the first coordinate corresponds to an empty point in space then the listed objects will be inserted at the beginning of the optical system sequence. Object-sequence positions may also be used to specify objects instead of coordinatepoints. Arrange uses the two-dimensional coordinate system given in PlotType.
See also: DrawSystem, PlotType, ToleranceSelection, ToleranceDoubleClick, SnapGrid, SnapGridOffset, Move, MoveReflected, Rotate, Copy, Constrain, Snap, Align, Transform, Add, Swap, Remove, Identify.

AsphericLens

AsphericLens[{curvature1, conic1, polynomialcoefficients1,insideaperture1}, {curvature2, conic2, polynomialcoefficients2, insideaperture2}, aperture, thickness, label, options] designates a double-surfaced lens both having aspherical surfaces.
The centerline curvature, conicconstant, and aspheric polynomialcoefficients for an aspheric lens prescription are all required. An optional specification for an insideaperture to each surface may also be given. AsphericLens uses the EvenFunction->True option to indicate the use of even power polynomial terms as coefficients, starting with the second order term. Otherwise, both even and odd power terms will be used. AsphericLens is created with its first surface centered about the origin and its second surface positioned down the positive x axis. The aperture argument may denote a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics. (Inspired by William Cottingame, UCLA.)
See also: AsphericLensSurface, AsphericMirror, ToroidalLensSurface, ToroidalLens, and ToroidalMirror.

AsphericLensSurface

AsphericLensSurface[{curvature, conicconstant, polynomialcoefficients, insideaperture}, aperture, label, options] designates a lens component that has an aspheric shape.
The centerline curvature, and conicconstant for an aspheric lens prescription are all required. Optional specifications for , the aspheric polynomialcoefficients and insideaperture to the surface may also be given. AsphericLensSurface is always used in combination with one or more additional LensSurface component types to create a complete lens object. AsphericLensSurface uses the EvenFunction->True option to indicate the use of even power polynomial terms as coefficients, starting with the second order. Otherwise, both even and odd power terms will be used. AsphericLensSurface is created with its surface centered about the origin. The aperture parameter may specify a circle, rectangle, or polygon depending on the number and type of elements listed by it. (Inspired by William Cottingame, UCLA.) The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.
See also: AsphericLens, AsphericMirror, ToroidalLensSurface, ToroidalLens, and ToroidalMirror.

AsphericMirror

AsphericMirror[{curvature, conicconstant, polynomialcoefficients, insideaperture}, aperture, label, options] and AsphericMirror[{curvature, conicconstant, polynomialcoefficients, insideaperture}, aperture, thickness, label, options] designates a mirror component that has an aspheric reflective shape.
The centerline curvature, and conicconstant for an aspheric mirror prescription are all required. Optional specifications for the aspheric polynomialcoefficients and insideaperture to the surface may also be given. The thickness refers to the refractive substrate of the mirror. If no thickness value is given, the component is a single-sided mirror. AsphericMirror is created with its first surface centered about the origin and its second surface positioned down the positive x axis. The aperture parameter may designate a circle, rectangle, or polygon depending on the number and type of elements listed by it. FlatSubstrate -> True creates the mirror on a flat-backed substrate. Hole -> holeaperture creates hole in the mirror. Depending on the InputEdgeThickness option setting, the thickness parameter may denote either the small edge thickness or the center thickness of the component. With InputEdgeThickness -> True, the thickness parameter is taken for the edge thickness. AsphericMirror uses the EvenFunction->True option to indicate the use of even power polynomial terms as coefficients, starting with the second order. Otherwise, both even and odd power terms will be used. (Inspired by Dave Whiteman, NASA.)
The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.
See also: AsphericLens, AsphericLensSurface, ToroidalLensSurface, ToroidalLens, and ToroidalMirror.

AssignRay

AssignRay is a placeholder inside HeldTraceKernel that designate an assignment of ray values in a Map.

AttenuationIndex

AttenuationIndex is a rule of Ray that gives the imaginary part of the refractive index divided by the real part for the ray segment in the local environment. The effective refractive index for Snells law is defined by RefractiveIndex + I*AttenuationIndex. AttenuationIndex uses ModelRefractiveIndex to calculate its value. In the case of a birefringent material, the value is a 3x3 tensor with components relative to the coordinate system passed as variable to the function ModelRefractiveIndex. See also: ModelRefractiveIndex, RelativePermeability, RefractiveIndex.

AttenuationIndexFunction

AttenuationIndexFunction -> function is a rule within TurboSurfaces that designates the functions for the attenuation indices on both sides of a surface.

AuthorizeNewOptions

AuthorizeNewOptions[component, optionlabels, options] is a generic building block used for adding new Ray option labels that are authorized to be carried within Ray objects across multiple ray/surface generations.
Ray parameters created by ray-tracing functions that are not listed in Options[Ray] or included in the NewAuthorizedOptions Ray object parameter are removed after the following surface encounter. Contents of optionlabels are added to NewAuthorizedOptions.
Note that AuthorizeNewOptions is only used in PropagateSystem and is not recognized by TurboTrace, which limits its usefulness in the present Rayica version.

Back

Back is a value of CurvatureDirection.

BackFacetDiameter

BackFacetDiameter is an option of the Solitaire prism that denotes the diameter of the back half-facets (below the girdle) as a percentage of the overall Solitaire diameter.
Specialized options of the Solitaire prism include: TableDiameter, GirdleThickness, CrownAngle, PavilionAngle, StarDiameter, BackFacetDiameter, CrownHeight, PavilionDepth, CuletAngle, and CuletDiameter.

BackFocalLength

BackFocalLength indicates the distance between the FocalPoint position and the chief center of the last optical surface.
See also: FindFocus and FindFocusFast.

Baffle

Baffle[aperture, label, options] and Baffle[aperture, thickness, label, options] denote a planar, component having only absorbing sides.


Baffle is created centered about the origin. The aperture parameter may specify a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

Baffled

Baffled is an option of some built-in component functions that specifies whether there are absorbing surfaces present.
Normally, Baffled -> True indicates that the effected surfaces are made as absorbers and Baffled -> False indicates that the effected surfaces are refractive surfaces. Baffled -> {surfacenumbers} is also used to specify each absorbing surface by the surface number.

BaffleSpan

BaffleSpan[{x1, y1}, {x2, y2}, height, label, options] and BaffleSpan[{x1, y1}, {x2, y2}, thickness, height, label, options] is similar to Baffle except that its size and placement are specified by the two two-dimensional coordinates {x1, y1} and {x2, y2}.
BaffleSpan spans the specified coordinates in the x-y-plane and has the specified height in z-direction.. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

BaffleWithHole

BaffleWithHole[aperture, holeaperture, label, options] and BaffleWithHole[aperture, holeaperture, thickness, label, options] designate a planar component with a hole created in its middle.
BaffleWithHole is created with its first surface centered about the origin. The aperture and holeaperture arguments may denote a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

BaK1

BaK1 specifies the use of the BaK1 glass medium.
The refractive index model for BaK1 is most suitable for the wavelength range of .35 microns to 2.3 microns.

BalancePhaseFront

BalancePhaseFront -> True/False is an option of most ray sources that controls the starting point of the rays.
For True, the starting point of each ray is adjusted to maintain a uniform transverse phasefront for the light source. This is particularly important in wavefront calculations, where uniform transverse phasefronts are required. BalancePhaseFront works closely with the StartAtBirthPoint option.
See also: BirthPoint and StartAtBirthPoint.

BallBaffle

BallBaffle[radius, label, options] denotes an entire spherical absorbing surface.
BallBaffle is created with its center at the origin of the coordinate system. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

BallLens

BallLens[diameter, label, options] denotes an entire spherical refractive component.
With the option setting Centered -> True, BallLens is created with its center of mass at the coordinate origin. With Centered -> False, BallLens is created with its first surface centered about the origin and its second surface positioned down the positive x axis. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

BallMirror

BallMirror[diameter, label, options] denotes an entire spherical mirror.
With the option setting Centered -> True, BallMirror is created with its center of mass at the coordinate origin. With Centered -> False, BallMirror is created with its first surface centered about the origin and its second surface positioned down the positive x axis. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

Base

Base is a value that indicates the base surface of an optical component.

BeamCurvature

BeamCurvature is a rule returned by GaussianBeam that designates the radius of phase curvature in a particular transverse plane for a Gaussian beam.
See also: BeamWaist, SymbolicBeamWaist, WaistDistance, SymbolicWaistDistance, SymbolicBeamCurvature, SymbolicBeamSpotSize, BeamDivergence, SymbolicBeamDivergence, BeamScaleLength, SymbolicBeamScaleLength, ComplexBeamParameter, and SymbolicComplexBeamParameter.

BeamDivergence

BeamDivergence is an rule returned by GaussianBeam that specifies the far-field full angle of divergence (in radians) of a Gaussian beam.
See also: BeamWaist, SymbolicBeamWaist, WaistDistance, SymbolicWaistDistance, BeamCurvature, SymbolicBeamCurvature, BeamSpotSize, SymbolicBeamSpotSize, SymbolicBeamDivergence, BeamScaleLength, SymbolicBeamScaleLength, ComplexBeamParameter, and SymbolicComplexBeamParameter.

BeamScaleLength

BeamScaleLength is a rule returned by GaussianBeam that is directly related to the beam waist spot size and is the axial scale length given for the particular Gaussian beam waist.
See also: BeamWaist, SymbolicBeamWaist, SymbolicBeamWaist, SymbolicBeamSpotSize, BeamCurvature, SymbolicBeamCurvature, BeamDivergence, SymbolicBeamDivergence, SymbolicBeamScaleLength, ComplexBeamParameter, and SymbolicComplexBeamParameter.

BeamSplitter

BeamSplitter[{percentreflected, percenttransmitted}, aperture, label, options] and BeamSplitter[{percentreflected, percenttransmitted}, aperture, thickness, label, options] designate a planar component that has a partially reflective/transmissive side with a thickness specified and a refractive side.
BeamSplitter is created with its splitting surface centered about the origin. The aperture parameter may designate a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

BeamSplitterCube

BeamSplitterCube[{percentreflected, percenttransmitted}, side, label, options] refers to a solid cube beam splitter that has a partially reflective/refractive surface across its diagonal.
BeamSplitter is created with one face centered about the origin and the opposite face positioned down the positive x axis. The side parameter specifies the edge dimension of a cube. Baffled->True is used to create absorbing surfaces at the top of the bottom of the cube. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: BeamSplitter, WedgeBeamSplitter, and ConjugateBeamSplitter.

BeamSpotSize

BeamSpotSize is a rule returned by GaussianBeam that designates the Gaussian beam radius (at 1/e of its amplitude peak) in a particular transverse plane.
See also: BeamWaist, SymbolicBeamWaist, WaistDistance, SymbolicWaistDistance, BeamCurvature, SymbolicBeamCurvature, SymbolicBeamSpotSize, BeamDivergence, SymbolicBeamDivergence, BeamScaleLength, SymbolicBeamScaleLength, ComplexBeamParameter, and SymbolicComplexBeamParameter.

BeamWaist

BeamWaist is a rule returned by GaussianBeam that designates the minimum radius size (at 1/e of its amplitude peak) at the waist position of a particular Gaussian beam.
See also: SymbolicBeamWaist, WaistDistance, SymbolicWaistDistance, SymbolicBeamSpotSize, BeamCurvature, SymbolicBeamCurvature, BeamDivergence, SymbolicBeamDivergence, BeamScaleLength, SymbolicBeamScaleLength, ComplexBeamParameter, and SymbolicComplexBeamParameter.

BiConcaveCylindricalLens

BiConcaveCylindricalLens[focallength, aperture, thickness, label, options] refers to a lens with two equally concave cylindrical surfaces.
BiConcaveCylindricalLens is created with its first surface centered about the origin and its second surface positioned down the positive x axis. The aperture parameter may specify a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.
Note that the specified focallength is always determined for a particular setting of the DesignWaveLength and ComponentMedium options. By default, Rayica uses DesignWaveLength->0.5461 microns and ComponentMedium->BK7. Care should be taken to insure that these default settings are compatible with the intended experimental design or unintended results can occur.

BiConcaveLens

BiConcaveLens[focallength, aperture, thickness, label, options] refers to a lens with two equally concave spherical surfaces.
BiConcaveLens is created with its first surface centered about the origin and its second surface positioned down the positive x axis. The aperture parameter may specify a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.
Note that the specified focallength is always determined for a particular setting of the DesignWaveLength and ComponentMedium options. By default, Rayica uses DesignWaveLength->0.5461 microns and ComponentMedium->BK7. Care should be taken to insure that these default settings are compatible with the intended experimental design or unintended results can occur.

BiConvexCylindricalLens

BiConvexCylindricalLens[focallength, aperture, thickness, label, options] designates a lens with two equally convex cylindrical surfaces.
BiConvexCylindricalLens is created with its first surface centered about the origin and its second surface positioned down the positive x axis. The aperture parameter may denote a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.
Note that the specified focallength is always determined for a particular setting of the DesignWaveLength and ComponentMedium options. By default, Rayica uses DesignWaveLength->0.5461 microns and ComponentMedium->BK7. Care should be taken to insure that these default settings are compatible with the intended experimental design or unintended results can occur.

BiConvexLens

BiConvexLens[focallength, aperture, thickness, label, options] designates a lens with two equally convex spherical surfaces.
BiConvexLens is created with its first surface centered about the origin and its second surface positioned down the positive x axis. The aperture parameter may denote a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.
Note that the specified focallength is always determined for a particular setting of the DesignWaveLength and ComponentMedium options. By default, Rayica uses DesignWaveLength->0.5461 microns and ComponentMedium->BK7. Care should be taken to insure that these default settings are compatible with the intended experimental design or unintended results can occur.

BirefringentLensSurface

BirefringentLensSurface[axisangle, aperture, label, options] denotes a planar component that models the index boundary between a birefringent-refractive material and an isotropic-refractive material.
BirefringentLensSurface is always used in combination with one or more additional BirefringentLensSurface component types to create a complete optical element such as a prism. BirefringentLensSurface is created with its surface centered about the origin. BirefringentLensSurface uses the option ComponentMedium -> {mediumO, mediumE} to designate the type of birefringent optical material with the alignment axis of materialO given by axisangle. Otherwise, ComponentMedium -> {{mediumO, mediumE}, isotropicmedium} specifies the interface with an isotropic material other than the default IntrinsicMedium setting. The aperture parameter may denote a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.
See also: CustomBirefringentLensSurface, LinearPolarizer, RetardationPlate, and JonesMatrixOptic.

BirthPoint

BirthPoint->coordinates is an option of ray sources that gives the three-dimensional spatial coordinates of the light source. BirthPoint -> Automatic yields an on-axis source at the origin. BirthPoint uses the CoordinateSystem option to specify whether its arguments shall be given in rectangular coordinates (CoordinateSystem -> CartesianCoordinates) or spherical coordinates (CoordinateSystem -> PolarCoordinates).
See also: SymbolicBirthPoint, CoordinateSystem, StartAtBirthPoint, and BalancePhaseFront.

BK7

BK7 indicates the use of the BK7 glass medium.
The refractive index model for BK7 is most suitable for the wavelength range of .35 microns to 2.3 microns.

Boundary

Boundary[boundaryparameters, label, options] designates a rectangular box that absorbs rays intercepted by its walls.
Here, the user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. There are four methods for specifying boundaryparameters: Boundary[{x1, y1, z1}, {x2, y2, z2}] uses the coordinates of top and bottom opposite corners of a rectangular box, Boundary[side] assumes a cube boundary, Boundary[xside, yside, zside] assumes a three-dimensional box that has a length specified by xside, a width specified by yside, and a height specified by zside, and Boundary[aside, bside] assumes a three-dimensional box that has a length specified by aside, a width specified by bside, and a height specified by bside. Optical systems usually have at least one boundary component listed at the end. By default, Boundary is not rendered. See also: ClearBoundary.

BoundaryChecked

BoundaryChecked -> True/False indicates whether ModelSurfaceRayIntersections has automatically incorporated the InsideSurfaceBoundaryQ information into the SurfaceIntersectionFunction.
BoundaryChecked and SurfaceIntersectionFunction are both returned by ModelSurfaceRayIntersections and embedded within the Surfaces rule of a component by ComponentFoundation. See also: InsideSurfaceBoundaryQ, ModelSurfaceRayIntersections, and SurfaceIntersectionFunction.

BoundaryFactor

BoundaryFactor -> factor determines a SurfaceBoundary scaling factor to be used during the construction of SurfaceApproximation models.
BoundaryFactor is an option of ModelSurfaceRayIntersections and ComponentFoundation. BoundaryFactor is also used in BoundingBox -> Automatic. See also: SurfaceApproximation, BoundingBox, and ModelSurfaceRayIntersections.

BoundaryLabel

BoundaryLabel -> label is a rule within TurboSurfaces that designates a boundary type.

BoundingBox

BoundingBox -> component is an option of custom optical elements that specifies a component shape whose one or more surfaces span the customized surface volume.
In addition to directly accepting a component or list of components, BoundingBox can also take one or more numerical values to describe its form. BoundingBox -> {{xmin, ymin, zmin}, {xmax, ymax, zmax}} may be used instead of a component to specify a three-dimensional rectangular volume. BoundingBox -> diameter specifies a spherical volume of the given diameter. Otherwise, BoundingBox -> {aside, bside} assumes a centred three-dimensional box that has a length specified by aside, a width specified by bside, and a height specified by bside. Finally, BoundingBox -> Automatic automatically determines a rectangular volume boundary from the SurfacePoints information when SurfaceApproximation -> Automatic is invoked.
In general, the BoundingBox information need not be rectangular and can be defined by any set of one or more analytic surfaces (passed in the component.) In addition, the BoundingBox need not define a closed volume. The BoundingBox option is used internally by ComponentFoundation and ModelSurfaceRayIntersections to construct the BoundingBoxQ function. BoundingBox is defined relative to the local coordinate system of the optical surface.
See also: BoundingBoxQ, ComponentFoundation, SurfacePoints, SurfaceApproximation, BoundaryFactor, and ModelSurfaceRayIntersections.

BoundingBoxQ

BoundingBoxQ -> function designates a function that returns True if the ray intercepts one or more of the BoundingBox surfaces.
BoundingBoxQ is used to speed nonsequential ray-trace calculations in which specialized custom surfaces are involved. The function of BoundingBoxQ takes the parameters: RSx, RSy, RSz, RTx, RTy, and RTz, where {RSx, RSy, RSz} is the ray starting point and {RTx, RTy, RTz} is the unit ray tilt vector. For iterative or open-form SurfaceRayIntersections settings (such as Numeric, FindRoot, FindMinimum, Solve, and NSolve), BoundingBoxQ is automatically created from BoundingBox and embedded within the SurfaceIntersectionFunction by ModelSurfaceRayIntersections. BoundingBoxQ is also located within the Surfaces rule of a component. BoundingBoxQ is only created for custom-component shapes and is not generally included in Rayica's standard components.
See also: BoundingBox, SurfaceRayIntersections, ModelSurfaceRayIntersections, and SurfaceIntersectionFunction.

BoxGraphic

BoxGraphic[{xmin, ymin, zmin}, {xmax, ymax, zmax}, label, options] specifies a three-dimensional rectangular box with its diagonally opposite corners placed at {xmin, ymin, zmin} and {xmax, ymax, zmax}.
BoxGraphic does not interact with rays in any way, but can be listed with active components or with other graphic components for creating passive three-dimensional shapes. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression.

BranchingSurface

BranchingSurface[aperture, componentincrement, label, options] refers to a planar component that causes intersecting rays to branch to a different component position relative to the list position held by BranchingSurface.
BranchingSurface is usually employed after a beam-splitter-type component, in order to redirect split rays down a different component-listing pathway, thereby shortening ray-trace calculation times. BranchingSurface is not visually rendered, but can be used to sample the ray/surface positions. BranchingSurface is created with its surface centered about the origin. The aperture parameter may designate a circle, rectangle, or polygon depending on the number and type of elements listed by it. Because BranchingSurface is not supported by TurboTrace, it now has limited application with the new version of Rayica. As such it is recommended to use the Resonate function instead.
The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

BubbleClass

BubbleClass is a database rule name that specifies the bubble class of a material.

BuildComponent

BuildComponent[objectset, options] synthesizes generic traits from several Component objects into a single Component object.
While BuildComponent is usually used by generic building block functions, BuildComponent may also be used as an external function to combine several Component objects into a single Component unit. See also: GroupDescription and AffectedSurfaces.

BundleOfRays

BundleOfRays[seed, {{name, vector}..}, options] is an alias of CustomRays.
See CustomRays for a more complete description.

CalciteE

CalciteE is a default material of BirefringentLensSurface to be defined by DataToRayica later.

CalciteO

CalciteO is a default material of BirefringentLensSurface to be defined by DataToRayica later.

CalibrateEnergy

CalibrateEnergy -> True/False/number indicates whether the relative integrated energy of each reported surface should be calibrated to the energy present at the first surface result of the ray trace.


CalibrateEnergy -> True requires a time-consuming numeric integration of the IntensityFunction. CalibrateEnergy -> False sets the central intensity point to a fixed value determined by IntensityScaleFactor. CalibrateEnergy -> number is uses true when the total number of traced rays per surface is less than the specified number See also: EnergyReference and ReportedSurfaces.

CartesianCoordinates

CartesianCoordinates is a value of the option CoordinateSystem.

CatalogFocalLength

CatalogFocalLength is a database rule name for a lens that specifies the approximate effective focal length as written in the catalog.
The actual effective focal length is given by the FocalLength name. See also: FrontFocalLength, BackFocalLength, and FocalLength.

CatalogInformation

CatalogInformation -> {{database entry},...} is an option of BuildComponent that supplies database information about the characteristics of a manufactured component.


CatalogInformation contains nested lists of rules with labels such as: ComponentName, SerialNumber, Price, Date. Each entry of the outer list represents one component. If no catalog information is available, an empty list is inserted. Otherwise the entry contains a list of lists with each sublist having information of one component database entry.

Centered

Centered is an option of component functions that can have values of True, False, or a number, depending on the particular component function.

In some functions, Centered -> True, specifies that the component is to be centered on the x-axis. In other functions, Centered -> True, indicates that an active surface is centered between two refractive surfaces. Centered -> number usually specifies a number between 0 and 1 to indicate the fractional distance of the active surface between two refractive surfaces.

CenteringTolerance

CenteringTolerance is a database rule name that specifies the manufacturing angular tolerances of an optical component in units of +- seconds of arc.

CenterThickness

CenterThickness is a database rule name that specifies the center thickness of a lens.

ChangedComponent

ChangedComponent is a value of TakeFrom, AddTo, and ReplaceFor and specifies that the Component object may be passed to or returned from DeflectionFunction.
ChangedComponent contains all of the Component object's contents, including changed parameters. The contents of ChangedComponent are used to replace the original Component object. See also: ChangedSurface, AddTo, and TakeFrom.

ChangedRay

ChangedRay is a value of TakeFrom, AddTo, and ReplaceFor and indicates that the modified Ray objects returned by previous ray-tracing function calculations are passed to or returned from the current DeflectionFunction.
ChangedRay results contain only modifications made to the original ray entering the surface. Note that OriginalRay contains the unmodified ray parameters entering the surface. See also: NewRay, CreatedRay, OriginalRay, AddTo, and TakeFrom.

ChangedSurface

ChangedSurface is a value of TakeFrom, AddTo, and ReplaceFor and specifies that a slotted element from Surfaces may be passed to or returned from DeflectionFunction.
Normally the contents indicated by ChangedSurface is slotted inside the Surfaces rule of Component, replacing the slot's previous contents. See also: ChangedComponent, AddTo, and TakeFrom.

ChangeRay

ChangeRay is an option of CreateRay that is used internally.

It specifies whether a ray object should be changed, if all necessary rules for beam propagation are already present. Internally ChangeRay -> False is used to speed up calls to CreateRay. If in the ray object a necessary rule is missed, ChangeRay has no effect.

ChangeSurfaceIncrement

ChangeSurfaceIncrement[component, newincrement, options] is a generic building block that changes the value of SurfaceIncrement.
ChangeSurfaceIncrement is only valid for PropagateSystem calculations and is not recognized by TurboTrace. In this regard, ChangeSurfaceIncrement is now obsolete and Resonate should be used instead.

ChangeSurfacePosition

ChangeSurfacePosition[component, newsurfaceposition, options] is a generic building block that changes ConfinedPosition to a new value indicated by newsurfaceposition.
ChangeSurfacePosition is only valid for PropagateSystem calculations and is not recognized by TurboTrace. In this regard, ChangeSurfacePosition is now obsolete and Resonate should be used instead.

CheckLimits

CheckLimits -> True is an option of ComponentFoundation.
It initiates a check for limits of SurfaceFunction and SurfaceNormalFunction inside ComponentFoundation. Zero denominators are checked as well as infinite values of logarithm and trigonometric functions. Due to the complexity of automatic limit detection, the user should investigate the created component. SurfaceFunction/.(Surfaces/.(created component)) and SurfaceNormalFunction/.(Surfaces/.(created component)) return the checked functions. See also: ComponentFoundation, SurfaceFunction, and SurfaceNormalFunction.

CircleGraphic

CircleGraphic[aperture, label, options] relates to a two-dimensional circle, ellipse, rectangle, or polygon lying in the horizontal x-y plane, depending on the designation of aperture.
CircleGraphic does not interact with rays in any way, but can be listed with active components or with other graphics components for creating passive three-dimensional shapes. The aperture parameter may designate a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression.

CircleOfRays

CircleOfRays[seed, size, options] initializes a set of rays distributed on the surface of a tube that points down the positive x-axis for the default BirthPoint setting.

If size is a list of two positive numbers {width, height}, then the tube has rectangular shape of dimensions {width, height}. If size is a single number, then the tube has a circular shape of a diameter dictated by size. If size is a list of two negative numbers {-width, -height}, then the tube has elliptical dimensions {width, height}.

The seed parameter is optional and is used to generate more elaborate ray patterns. When it is present, it specifies additional light sources to be nested with the basic CircleOfRays result. When PropagateSystem is used for the ray trace, CircleOfRays produces a set of Ray objects. However, with TurboTrace calculations, a TurboRays object is generated from CircleOfRays instead. The distribution of rays is controlled by the GridSpacing option and the starting origin is defined by the BirthPoint option.

See also: CreateRays, NumberOfRays, MonteCarlo, GridSpacing, SourceFraction, SourceOffset, BirthPoint, SingleRay, ConeOfRays, WedgeOfRays, LineOfRays, GridOfRays, PointOfRays, CustomRays, FieldOfRays, GaussianBeam, and RainbowOfRays.

CircumscribeBoundary

CircumscribeBoundary -> True is an option of ComponentFoundation that directs the triangular net of SurfacePoints to circumscribe the surface boundary.
CircumscribeBoundary -> False directs the SurfacePoints to inscribe the surface boundary. CircumscribeBoundary works in conjunction with SurfaceApproximation -> TriangleNet. See also: SurfacePoints, SurfaceApproximation, and SurfaceRayIntersection.

ClearAperture

ClearAperture is a database rule name that specifies the minimum clear aperture diameter of a lens.
Note that ClearAperture only gives the smallest side dimension for rectangular-shaped lenses See also: WindowParameters.

ClearBoundary

ClearBoundary[boundaryparameters, label, options] refers to a rectangular box that terminates rays intercepted by its walls.
ClearBoundary does not set the value of Intensity to zero, and therefore is useful for defining modular optical subunits to be pieced into a larger system. Here, the user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. There are three methods for specifying boundaryparameters: ClearBoundary[{x1, y1, z1}, {x2, y2, z2}] uses the coordinates of top and bottom opposite corners of a rectangular box, ClearBoundary[side] assumes a cube boundary, ClearBoundary[xside, yside, zside] assumes a three-dimensional box that has a length specified by xside, a width specified by yside, and a height specified by zside, and ClearBoundary[aside, bside] assumes a three-dimensional box that has a length specified by aside, a width specified by bside, and a height specified by bside. Optical systems usually have at least one boundary component listed at the end. By default, ClearBoundary is not rendered. See also: Boundary.

ClearRayicaCache

ClearRayicaCache[] clears special Rayica caches. Deleted caches are restored automatically by using Rayica, but a few that can be restored with RestoreRayicaCache. Any missing cache only affects the calculation time, not the results.
See also: Rayica, RestoreRayicaCache.

ClimaticResistance

ClimaticResistance is a database rule name that gives an indication of the climatic resistance of a material.

ClonePosition

ClonePosition indicates the origin of the local coordinate system of a cloned element generated from CreateClones data in TurboTrace.
ClonePosition is internally used by some DeflectionFunction definitions during ray traces involving CreateClones. See also: CloneScale and CloneRotation.

CloneRotation

CloneRotation indicates a rotation matrix transformation for the local coordinate system of a cloned element generated from CreateClones data in TurboTrace.
CloneRotation is internally used by some DeflectionFunction definitions during ray traces involving CreateClones. See also: CloneScale and ClonePosition.

CloneScale

CloneScale indicates a scaling transformation for the local coordinate system of a cloned element generated from CreateClones data in TurboTrace.
CloneScale is internally used by some DeflectionFunction definitions during ray traces involving CreateClones. See also: CloneRotation and ClonePosition.

CloneSortLength

CloneSortLength -> numberofelements determines the number of neighboring phantom optical components to be tested for closest intersection during the ray trace.
As the numberofelements setting is increased, the trace becomes more robust at the cost of diminished speed and increased memory consumption. See also: CreateClones, CloneSortMethod, and ShowClones.

CloneSortMethod

CloneSortMethod -> method determines the method used for sorting the phantom optical components to be tested for closest intersection during ray tracing.
Alteration of CloneSortMethod is normally not required unless the default ray trace method produces erroneous results. Presently, CloneSortMethod accepts four different settings: 1, 2, 3, and 4. Here, methods 1 and 3 are the fastest, but methods 2 and 4 are the most robust. Methods 1 and 2 are faster than methods 3 and 4 when the CloneSortLength value is significantly less than the total number of phantom elements. Methods 3 and 4 are most useful when the total number of cloned elements remains small. See also: CloneSortLength, CreateClones and ShowClones.

CO550

CO550 indicates the use of the Corning Glass Code CO550 molded glass.

The refractive index model for CO550 is most suitable for the wavelength range of 0.365 microns to 1.55 microns.

CoatedRefraction

CoatedRefraction is a value of Theory, for example returned by ModelRefractionTheory, to characterize a refractive medium with coated surface.

CoatingDirectory

CoatingDirectory is an option to LoadData that specifies a directory.

This directory contains data on optical coatings.

CoatingFiles

CoatingFiles is an option to LoadData that specifies a list of file names to be loaded.
These files contain information on optical coatings.

CoatingMedium

CoatingMedium is an option of component functions that indicates the type of material used in the fabrication of the coating of the component. Instead of a name a Reflectance can be given as percentage.
This label is used by ModelCoating in calculating the Intensity parameter. CoatingMedium is an option of all refractive components such as the Refraction genetic building block. See also: ComponentMedium, RefractiveIndex, and ModelCoating.

CoatingSpecification

CoatingSpecification is an option of component functions that indicates the "thickness" of the coating of the component.
This label is used by ModelCoating in calculating the Intensity parameter, and can be e. g. a thickness or a wavelength in microns. CoatingSpecification is an option of all refractive components such as the Refraction genetic building block. See also: ComponentMedium, RefractiveIndex, and CoatingMedium.

CodeVToData

CodeVToData[stringdata, options] is used to import CodeV lens data into Rayica's database format.
CodeVToData requires that the stringdata for import be given in a single ascii string. Usually, this operation is accomplished by directly copying and pasting the CodeV data from a text editor into a Mathematica notebook with double quotation marks placed manually on either side of the pasted data. CodeVToData then converts this string information into a rule-based, list format that is recognized by Mathematica. The translation process can be further modified by giving additional options to CodeVToData. Once converted, the new information can be edited further with EditData, saved to disk with SaveData, and converted to optical component models with DataToRayica. CodeVToData is presently restricted to lens data that describe centered, refractive, spherical, multiple lens-surfaces with field stops. Code V is a Trademark of Optical Research Associates, Pasadena, CA. See also: CodeVToRayica, DataToRayica, ExcelToData, ExcelToRayica, KDPToData, KDPToRayica, ZemaxToData, and ZemaxToRayica.

CodeVToRayica

CodeVToRayica[stringdata, options] is used to import and convert CodeV refractive lens data into one or more optical lens models for Rayica.
CodeVToRayica requires that the stringdata for import be given in a single ascii string. Usually, this operation is accomplished either by opening the CodeV data file inside Mathematica or by manually copying and pasting the relevant data into an existing Mathematica notebook and, as a final last step, creating a string object by manually placing double-quotation marks on either side of the data. CodeVToRayica then converts this string information into one or more optical lens models that work with Rayica. The conversion process can be further modified by giving additional options to CodeVToRayica (that get passed internally to StringReplace and EditData). CodeVToRayica makes internal calls to CodeVToData and DataToRayica. CodeVToRayica is presently restricted to lens data that describe centered, refractive, spherical, multiple lens-surfaces with field stops. Code V is a Trademark of Optical Research Associates, Pasadena, CA. See also: CodeVToData, DataToRayica, ExcelToRayica, KDPToRayica, and ZemaxToRayica.

Coherent

Coherent -> True is an option of ShowValue and ShowSurfacePlot that specifies, that the values are added together with the assumption, that all rays are mutually coherent.See also: ShowValue, ShowSurfacePlot.

ColorCode

ColorCode -> {wavelength1, wavelength2} is a database rule name for a material that gives a quick reference to where the UV absorption begins and how steep the edge is.
The wavelength1 gives the wavelength in nm for 0.80 transmittance through 10 millimeters of the material. The wavelength2 gives the wavelength in nm for 0.05 transmittance through 10 millimeters of the material.

ColorView

ColorView -> rayparameterlabel is an option of DrawSystem/AnalyzeSystem and ShowSystem that is used to specify the colors of rays.
ColorView gives rayparameterlabel to ModelRayColor for determining ray colors. As examples: you can use ColorView -> Black to render the rays in black; ColorView -> WaveLength attempts to match the color of the ray to the wavelength; ColorView -> Automatic displays the initial RGBColor values assigned for the RayLineRGB ray parameter; ColorView -> rayparameterlabel for any rayparameterlabel other than WaveLength attempts to colorize each ray segment according to the rank of the rayparameterlabel value within the possible range of rayparameterlabel values, for the displayed rays selected by RayChoice and ShowRange. If more than one rayparameterlabel is indicated or the parameter contains a vector of three elements, then each of three values is assigned to the red, green, and blue colors. ColorView may also point to a list of three numbers representing the red, green, and blue colors used. See also: ModelRayColor, AllColors, and RayChoice.

CompiledCoating

CompiledCoating -> value is a rule returned by GetCoatingRules, which describes the coating. The function value[] returns a PrecisionFunction, which depends on WaveLength, Intensity, Polarization, Temperature, Tension, SurfaceCoordinates, WaveTilt, SurfaceNormalMatrix. The result of this PrecisionFunction is a flattened list with Intensity for transmission, Polarization for transmission, Intensity for Reflection, Polarization for reflection..

CompiledIndices

CompiledIndices -> value is a rule returned by GetMaterialRules, which describes the material. The function value[] returns a PrecisionFunction, which depends on WaveLength, Intensity, Polarization, Temperature, Tension, MaterialRotationMatrix, MaterialSpecification, SurfaceCoordinates, WaveTilt, SurfaceNormalMatrix. The order is fixed and automatically created. MaterialRotationMatrix as well SurfaceCoordinates and WaveTilt are used in connection with birefringent or structured media. The result of this PrecisionFunction is a list with a content controlled by the second argument to GetMaterialRules.

CompiledSurfaceApproximation

CompiledSurfaceApproximation -> code is a rule within the Surfaces rule of a component that gives the code being used by Rayica to approximate a surface.
This approximation is used for custom surface functions to generate automatically start values to find a ray-surface intersection. See also: SurfacePoints.

CompiledSurfaceIntersectionFunction

CompiledSurfaceIntersectionFunction[compiledfunction] is used to designate a compiled function that calculates surface-ray intersections.
CompiledSurfaceIntersectionFunction replaces the CompiledFunction head and is always used in connection with the SurfaceIntersectionFunction rule embedded within the Surfaces rule of a component. The function takes the ray start and tilt in local surface coordinates as a sequence of six real values and returns a list of all the three-dimensional parametric intersection coordinates, ray length and two surface coordinates. If no intersection is found, the function returns {{-1,0,0}}. See also: SurfaceIntersectionFunction and SurfaceRayIntersections.

CompletedRay

CompletedRay is a placeholder inside HeldTraceKernel for a variable that holds the ray object after a new surface intersection.

ComplexBeamParameter

ComplexBeamParameter is an rule returned by GaussianBeam that provides the complex beam parameter q of a Gaussian beam at a particular transverse plane.
ComplexBeamParameter is returned by GaussianBeam. See also: BeamWaist, SymbolicBeamWaist, WaistDistance, SymbolicWaistDistance, BeamSpotSize, SymbolicBeamSpotSize, BeamCurvature, SymbolicBeamCurvature, BeamScaleLength, SymbolicBeamScaleLength, BeamDivergence, SymbolicBeamDivergence, and SymbolicComplexBeamParameter.

Component

Component[genetic traits] is an object made up of genetic traits that define the properties of an optical component.
These genetic traits describe the ray-tracing behavior as well as the rendering of Component. Component may actively interact with rays, or may be purely graphical in content. Any of the Move functions may be nested around Component to change its position and orientation.

ComponentBoundary

ComponentBoundary is a database rule name that specifies the entrance dimensions for a lens and the overall dimensions for a prism.
ComponentBoundary may follow the Rayica convention for lens apertures, where a single number indicates the diameter of a circular shape and a list of two numbers indicate a rectangular shaped boundary. However, ComponentBoundary can also be used to specify the shapes of prisms and other object forms. See also: ClearAperture, HousingBoundary, and SurfaceBoundary.

ComponentDescription

ComponentDescription -> ComponentDescription[descriptionlist] is a rule within Component, made up of a description that identifies the optical component. Creating the component with the option BuildComponent -> True places in the descriptionlist all of the genetic building blocks used to create the component.

ComponentFoundation

ComponentFoundation[{surfacevalue, surfacevalue}, aperture, thickness, options] and ComponentFoundation[surfacevalue, aperture, options] create the initial Component object data structure that defines either a double-surfaced or single-surfaced optical element in Rayica.
The aperture parameter may indicate a circle, rectangle, or polygon depending on the number and type of elements listed by it. The surfacevalue parameters usually specify the curvature of the surface. The types of surface shapes used in ComponentFoundation are given by the SurfaceLabel option. SurfaceLabel identifies the surface types as either SphericalShape, ParabolicShape, PlanarShape, OtherShape, or a user-defined shape label. SphericalShape designates a spherical radius of curvature for surfacevalue. ParabolicShape specifies a parabolic focal length for surfacevalue. Surfaces can be set to planar shapes either by using Infinity in surfacevalue or by using PlanarShape in SurfaceLabel. Users can add new surface definitions by assigning new functions to ModelSurfaceShape with an accompanying SurfaceLabel value as an argument. Otherwise, user-defined, parametric surface functions can be directly specified by selecting SurfaceLabel -> OtherShape and using three-dimensional pure functions of two variables in surfacevalue. An example of such a user-defined, parametric surface function is: Function[{s,t},{s^2+t^2,s,t}]. Component objects are built by nesting ComponentFoundation at the center of the various other generic building blocks that give additional attributes to the component. ComponentFoundation defines the overall shape of the optic while other building blocks either determine how the element is graphically rendered, such as ComponentRendering, or give the optical properties of the different internal surfaces, such as Refraction, Reflection, and Diffraction.
See also: OffAxis, ActiveComponent, FunctionCenter, and ModelSurfaceShape.

ComponentID

ComponentID is a rule of Component and a rule embedded within Surfaces of Component that specifies a unique identification number.
ComponentID is usually determined by the function Unique during the creation of a Component object. As a rule of Ray, ComponentID indicates the component encountered by the ray segment. See also: BuildComponent, ComponentFoundation, and Component.

ComponentIncrement

ComponentIncrement -> value is a rule of Ray that forces a change in the next generated Ray object's component target.
ComponentIncrement -> Automatic causes Ray to proceed in the same direction through the component listing according to SurfaceIncrement, a related parameter. ComponentIncrement -> integer forces an immediate change of the component targeted by Ray, by the amount given by integer. As an example, ComponentIncrement -> -2, would cause -2 to be subtracted from the ComponentNumber parameter in Ray. The ComponentIncrement parameter reverts back to the Automatic setting after one propagation iteration. See also: ConfinedPosition, ComponentNumber, IntersectionNumber, GenerationNumber, ConfinedNumber, and SurfaceNumber.

ComponentMedium

ComponentMedium is an option of component functions that indicates the type of material used in the fabrication of the component.
This label is used by ModelRefractiveIndex in calculating the RefractiveIndex parameter, but can be used by other material-related models as well as ModelIntensity. ComponentMedium is an option of all refractive components such as the Refraction genetic building block. See also: IntrinsicMedium, OpticalMedium, RefractiveIndex, and ModelRefractiveIndex.

ComponentNumber

ComponentNumber is a rule of Ray that indicates the slot position of the affected component encountered by the ray segment.
SurfaceNumber, ComponentNumber, ConfinedPosition, UnconfinedPosition, IntersectionNumber, GenerationNumber, and ConfinedNumber are all pointer parameters stored in Ray.

ComponentQ

ComponentQ[x] tests whether x is a Component object. The result is True or False.

ComponentRendering

ComponentRendering[component, options] is a generic building block that contructs information about the rendering of a component.
ComponentRendering defines how each surface within component is graphically rendered. If the component parameter contains multiple surfaces, then ComponentRendering also graphically connects the edges of the different surfaces together. GraphicDesign is an option to ComponentRendering that characterizes the component rendering. GraphicDesign has possible five styles. These are Automatic, Sketch, Wire, Solid, and Off. These styles are also options of ComponentRendering that characterize the rendering at a primitive level and are further defined with SurfaceRendering, EdgeRendering, and CrossRendering, although EdgeRendering does not apply to single-surfaced components. The component rendering can be controlled either by giving separate rendering commands for each suboption or by using the GraphicDesign option. See also: GraphicDesign, SurfaceRendering, EdgeRendering, and CrossRendering.

ComponentSelect

ComponentSelect[objectset, selectionproperties] takes an object set composed of Component objects, and returns a filtered list of Component objects that shares the common set of traits specified in selectionproperties.
There are two ways of specifying selectionproperties: the first way is to give a list of Component rules selected. The second way is to give a function that takes Component rules as inputs and returns True or False. An example of the first method is {TranslationVector -> {0, 0, 0}, ComponentNumber -> 2}. An example of the second method is Function[{ComponentNumber, TranslationVector}, ComponentNumber == 2 && TranslationVector[[1]] > 0]. If selectionproperties === All or selectionproperties is left out, then all Component objects are passed back. ComponentSelect[objectset] returns an unfiltered list of Component objects. ComponentSelect can also be used to translate TurboTrace data into Component object format.

ComponentSelectComponentOrientation

ComponentSelectComponentOrientation is a an option of ShowComponentOrientation that determines the numbers of components, for which an orientation should be drawn. See also: ShowSystem, ShowComponentOrientation.

ComponentTransformation

ComponentTransformation -> {translationvector, rotationmatrix} is a rule within Surfaces of Component that describes the original position and orientation of the parent component of the surface. Functions grouping components together, like Resonate, do not change ComponentTransformation. See also: TranslationVector, RotationMatrix

CompoundLens

CompoundLens[curvatures, surfaceboundaries, surfaceseparations, opticalmediumlist, label, options] refers to a lens assembly that consists of spherical and aspherical refracting surfaces.
The curvatures can be specified either by radiusofcurvatures, inverse radiusofcurvatures, and aspheric polynomial coefficients (see also: AsphericLensSurface), where either Infinity or 0 can be used to indicate planar surfaces. In addition, CompoundLens is specified by a list of surface separations. The opticalmediumlist must also be specified either as a list of symbols to identify built-in index functions, a list of numbers to define refractive index values, or as a list of functions. CompoundLens is created with its first surface centered about the origin and the remaining surfaces positioned down the x axis. The surfaceboundaries parameter gives a list of apertures that correspond to each surface, where an aperture may indicate a circle, rectangle, or polygon depending on the number and type of elements listed by it.
CompoundLens may also include pinhole surfaces to provide field stops. Such a pinhole is detected by CompoundLens where IntrinsicMedium is listed twice consecutively or is given as the first element within opticalmediumlist. In such a case, the inside hole boundary is taken from corresponding aperture in surfaceboundaries and the outside boundary of the pinhole is taken from the average aperture size of the next neighboring lens surface(s). The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics. See also: LensDoublet and LensTriplet.

Conductive

Conductive is a value of Theory, for example returned by ModelRefractionTheory, to characterize a conductive, nonmagnetic medium.

Conductivity

Conductivity is a rule of Ray that gives the conductivity value for the ray segment in the local environment. The effective relative permittivity is calculated with the conductivity as (relative permittivity + I * (wavelength * conductivity) / (2 * Pi * vacuum speed of light * permittivity free space)).

ConeOfRays

ConeOfRays[seed, spread, options] initializes a set of rays distributed along a funnel-shaped surface that is oriented down the positive x-axis for the default BirthPoint setting.

The spread parameter is taken as the full cone angle, in degrees units, for the default BirthPoint setting of Automatic. However, for other BirthPoint settings, the spread parameter specifies the intercept spatial dimensions, at the y-z plane, of the ray set. If spread is a list of two positive numbers {width, height}, then the cone has rectangular shaped cross-section. If spread is a single number, then the cone has a circular shaped cross-section. If spread is a list of two negative numbers {-width, -height}, then the cone has elliptical shape given by {width, height}.

The seed parameter is optional and is used to generate more elaborate ray patterns. When it is present, it specifies additional light sources to be nested with the basic ConeOfRays result. When PropagateSystem is used for the ray trace, ConeOfRays produces a set of Ray objects. However, with TurboTrace calculations, a TurboRays object is generated from ConeOfRays instead. The distribution of rays is controlled by the GridSpacing option and the starting origin is defined by the BirthPoint option.

See also: NumberOfRays, MonteCarlo, GridSpacing, SourceFraction, SourceOffset, BirthPoint, SingleRay, CircleOfRays, WedgeOfRays, LineOfRays, GridOfRays, PointOfRays, CustomRays, FieldOfRays, GaussianBeam, and RainbowOfRays.

Confine

Confine[listofcomponents, entrancesurfacenumbers, options] is a generic building block used to encapsulate the list of Component objects into a single Component object that allows rays to enter the component only through surfaces specified by entrancesurfacenumbers.
Confine is used in conjunction with the Resonate generic building block to create arrays of multiple-surfaced elements, such as fiber optic bundles. Confine passes options to BuildComponent. See also: Resonate and Unconfine.

ConfinedNumber

ConfinedNumber is a rule of Ray that gives the present slot position of the outermost nested element within ConfinedPaths of Component.
SurfaceNumber, ComponentNumber, ConfinedPosition, UnconfinedPosition, IntersectionNumber, GenerationNumber, and ConfinedNumber are all pointer parameters stored in Ray.

ConfinedPaths

ConfinedPaths is a rule of Component that indicates a nested list of rules that define the confined propagation behavior of a ray migrating through the component.
ConfinedPaths lists all of the confined migration pathways available for the impinging ray. ConfinedPaths contains lists including SurfaceNumber and DeflectionNumber rules. See also: ConfinedNumber.

ConfinedPosition

ConfinedPosition is a rule of Ray that gives the present slot position of the innermost nested element within ConfinedPaths of Component.
SurfaceNumber, ComponentNumber, ConfinedPosition, UnconfinedPosition, IntersectionNumber, GenerationNumber, and ConfinedNumber are all pointer parameters stored in Ray.

ConjugateBeamSplitter

ConjugateBeamSplitter[{percentreflected, percenttransmitted}, aperture, label, options] and ConjugateBeamSplitter[{percentreflected, percenttransmitted}, aperture, thickness, label, options] designate a planar component that has a partially conjugate-reflective/transmissive side and, with a thickness specified, a refractive side.
ConjugateBeamSplitter is created with its splitting surface centered about the origin. The aperture parameter may designate a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

ConjugateMirror

ConjugateMirror[aperture, label, options] and ConjugateMirror[aperture, thickness, label, options] refer to a planar, phase-conjugate reflective mirror.
The thickness refers to the refractive substrate of the mirror. If no thickness value is given, the component is a single-sided mirror. ConjugateMirror is created with its surface centered about the origin. The aperture parameter may specify a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

ConjugateReflection

ConjugateReflection[component, options] is a generic building block produces conjugate-reflected rays from optical surfaces.

ConnectSelectedPoints

ConnectSelectedPoints is an option of ShowSelectedPoints that allows connection of points See also: ShowSystem.

ConserveEnergy

ConserveEnergy -> True/False is an option of the ScatterRays that indicates whether Intensity values in the scattered rays should be reduced to conserve overall energy.

Constrain

Constrain -> {coordinatepoints} is an option of AnalyzeSystem/ShowSystem based on mouse-generated coordinatepoints that repositions components and rays along a constrained horizontal or vertical axis of movement.
Constrain uses a list of coordinatepoints taken with the mouse from the rendered graphics to indicate the objects getting translated and the new translation coordinates. Object-sequence positions may also be used to specify objects instead of coordinatepoints. Constrain uses the two-dimensional coordinate system given in PlotType.
See also: DrawSystem, PlotType, ToleranceSelection, ToleranceDoubleClick, SnapGrid, SnapGridOffset, Move, MoveReflected, Arrange, Rotate, Copy, Snap, Align, Transform, Add, Swap, Remove, Identify.

ConstructMeritFunction

ConstructMeritFunction[opticalsystem, options] constructs a RayTraceFunction that calculates the performance of an optical system for a specified set of input parameters.
ConstructMeritFunction calls TurboTrace to create the RayTraceFunction according to the MeritType option setting. MeritType is internally converted by ConstructMeritFunction into particular settings for the ReportedParameters and ReportedFunction options. As an alternative to using the MeritType option, the user can instead work directly with the ReportedParameters and ReportedFunction options. ConstructMeritFunction is used by OptimizeSystem. See also: OptimizeSystem, MeritType, TurboTrace, and RayTraceFunction.

ConvertOptics

ConvertOptics[objectset, outputtype] takes an objectset composed of rays and/or components, and returns an objectset in the different format given by the OutputType setting.
The function is called at the beginning and end of TurboTrace, PropagateSystem, and ShowSystem. In RaySelect, ComponentSelect, ReadRays, and ReadComponents, the OutputType option is passed to ConvertOptics to change object formats. ConvertOptics uses the following OutputType settings: OpticalSystem, StandardGraphics, TurboSystem, and Surfaces.

CoordinateSystem

CoordinateSystem -> coordinatesystem is an option of geometric sources and some utility functions that gives the coordinate system being used for points.

It may take the values PolarCoordinates and CartesianCoordinates or a list thereof. Sources apply only the first the value in combination with BirthPoint.

Copy

Copy -> {coordinatepoints} is an option of AnalyzeSystem/ShowSystem based on mouse-generated coordinatepoints that duplicates and moves the new components and rays.
Copy uses a list of coordinatepoints taken with the mouse from the rendered graphics to select objects and produce a copy of objects relative to the last indicated coordinatepoints. Object-sequence positions may also be used to specify objects instead of coordinatepoints. Copy uses the two-dimensional coordinate system given in PlotType.
See also: DrawSystem, PlotType, ToleranceSelection, ToleranceDoubleClick, SnapGrid, SnapGridOffset, Move, MoveReflected, Arrange, Rotate, Constrain, Snap, Align, Transform, Add, Swap, Remove, Identify.

CosineCompensation

CosineCompensation -> True/False is an option of FindIntensity that specifies whether the ray intensities are weighted by the Cosine of their angle of incidence with the surface normal. See also: SequentialRead.

CoupledWaveTheory

CoupledWaveTheory->True/False is an option that indicates whether a specialized form of couple-wave theory is used for calculating the diffraction efficiency of gratings.
CoupledWaveTheory->True accurately describes the polarization-dependent behavior of a volumetic phase grating with a cosine index profile and two deflected waves without absorption. The present implementation of CoupledWaveTheory->True can only model the zero and first diffracted orders and cannot be applied to higher order terms of diffraction. Otherwise, CoupledWaveTheory->False can be used to model any combination of diffracted orders. The diffraction efficiency of diffracted terms in CoupledWaveTheory->False is based on the combined settings of the DiffractedOrders and EfficiencyFunction options. Although CoupledWaveTheory->False accurately models optical path length and diffraction directions, it does not incorporate polarization effects or model diffraction efficiency in the precise manner of CoupledWaveTheory->True.
See also: DiffractedOrders, EfficiencyFunction, Diffraction and Grating.

CreateClones

CreateClones -> {{coordinates, rotationmatrix, componentnumber, scale}, ...} specifies the placement of one or more phantom optical components to be used during the ray trace. These component aliases exhibit the raytrace behavior of the original component members but do not consume additional computer memory. This permits the efficient nonsequential ray tracing of large arrays of optical elements.
In the specification of CreateClones, the coordinates parameter gives the two or three-dimensional location of the cloned object, rotationmatrix provides the cloned optic orientation, componentnumber denotes which component in the optical system list will be cloned, and scale indicates the relative size of the new clone. In addition to taking a single numeric value, the scale parameter can also take a list of three numbers to specify three separate coordinate scales. If no twisting about the rotation axis is required, the unit-direction vector (the first rotationmatrix element) can be used on its own and the remaining rotationmatrix elements will be internally calculated. During the specification of CreateClones, rotationmatrix, componentnumber, and scale are all optional parameters that can be selectively omitted or mixed-in, however, componentnumber must also be present before a scale can be specified. When not present, rotationmatrix, componentnumber, and scale will assume the respective values of: {{1,0,0},{0,1,0},{0,0,1}}, 1, and 1.
CreateClones permits a wide variety of input data formats. For very large systems of specified elements, CreateClones also permits the use of packed arrays. In such a case, each set of parameters in the element listing is presented as a flattened list of real numbers. CreateClones also permits the specification of multiple sets of optical arrays. This is accomplished with an additional nesting of the data: {{{coordinates, rotationmatrix, componentnumber, scale}, ...},...}. Here, the rays are nonsequentially traced within each array, but are sequentially traced between the array data sets.
Although CreateClones only operates within the TurboTrace engine, CreateClones may also be specified for AnalyzeSystem/DrawSystem. In such an event, TracingEngine->TurboTrace is automatically used instead of PropagateSystem. See also: ShowClones, CloneSortLength, CloneSortMethod, ComponentNumber, TranslationVector, and RotationMatrix.

CreatedRay

CreatedRay is a value of TakeFrom, AddTo, and ReplaceFor and denotes that the Ray objects created by previous ray-tracing function calculations are passed to or returned from DeflectionFunction.
If CreatedRay is listed by TakeFrom, then CreatedRay is sequentially fed as an input to the ray-tracing function, with each sequential result creating a different output. The elements of CreatedRay are inserted into the previous Ray objects generated at this surface if CreatedRay is listed by AddTo. See also: ChangedRay, AllCreatedRays, and OriginalRay.

CreateFiberShape

CreateFiberShape[points] uses a list of two-dimensional points to create a set of fitted parametric-functions along with the fiber length.
CreateFiberShape is designed to work with CustomFiber and CustomFiberMirror. See also: Fiber, CustomFiber, and CustomFiberMirror.

CreateRay

CreateRay[source, options] is used by PropagateSystem and TurboTrace to generate either Ray objects or a TurboRays object that represents a set of rays for the given source.

In addition, CreateRay fills in any essential ray parameters missing from the specified source by taking default values from Options[Ray]. Check Options[Ray] for default settings. The option ChangeRay can be used suppress changes, if the ray contains all necessary rules for propagation. The OutputType -> Ray/TurboRays option of CreateRay is used internally by PropagateSystem and TurboTrace to determine the ray object-type that is generated. See also: CreateRays.

CreateRays

CreateRays[source, options] is used by PropagateSystem and TurboTrace to generate either Ray objects or a TurboRays object that represents a set of rays for the given source.

In addition, CreateRay fills in any essential ray parameters missing from the specified source by taking default values from Options[Ray]. Check Options[Ray] for default settings. The option ChangeRay can be used suppress changes, if the ray contains all necessary rules for propagation. The OutputType -> Ray/TurboRays option of CreateRay is used internally by PropagateSystem and TurboTrace to determine the ray object-type that is generated. CreateRays is an alias of CreateRay.

CreateRefractiveIndexModel

CreateRefractiveIndexModel[datalist, materiallabel] creates a wavelength-dependent model that is fitted to the data for the index model specified by the RayicaFunction option.
Note that the materiallabel is used for the purposes of referencing the particular material within Rayica. Although materiallabel can be given as a string (such as "NewName"), it is often given as a symbolic object (such as NewName). The datalist should have the following format: {{wavelength1, index1}, {wavelength2, index2}, {wavelength3, index3}, ...}. CreateRefractiveIndexModel plots the data points against the fitted function, revealing model deficiencies. Finally, CreateRefractiveIndexModel defines the refractive model in Rayica. With the SaveData->True setting, this model is also stored in Rayica's database on disk for future retrieval and use. See also: IndexInterpolationFunction, SellmeierFunction, CreateRefractiveIndexModel, GlassCodeFunction, HerzbergerFunction, ModelRefractiveIndex, and ModelIntensity.

CrossRendering

CrossRendering is an option of ComponentRendering that designates the graphical rendering of a cross that bridges the interior of a double-sided component and forms crossed lines on a single-sided component.
CrossRendering may take the values: Fill, Trace, Mesh, Empty, and {Fill, Mesh}. See also: ComponentRendering, EdgeRendering, SurfaceRendering, and RenderType.

CrossStyle

CrossStyle is an option of ComponentRendering that designates the graphical primitives to be inserted before the rendering of a cross that bridges the interior of a double-sided component and forms crossed lines on a single-sided component.

It is a list of two rules: LineStyle and FillStyle. See also: DefaultStyle, SurfaceStyle, EdgeStyle.

CrownAngle

CrownAngle is an option of the Solitaire prism that denotes the angle (in degrees) that the Crown facet makes with respect to the girdle waist. Note that CrownAngle and CrownHeight are complementary ways of fixing the bezel facet geometry on the crown (above the girdle).
Specialized options of the Solitaire prism include: TableDiameter, GirdleThickness, CrownAngle, PavilionAngle, StarDiameter, BackFacetDiameter, CrownHeight, PavilionDepth, CuletAngle, and CuletDiameter.

CrownGlass

CrownGlass designates the use of a crown glass medium.
The refractive index model for CrownGlass is most suitable for the wavelength range of .44 microns to .66 microns.

CrownHeight

CrownHeight is an option of the Solitaire prism that indicates the vertical distance from the girdle waist to the top table facet as a percentage of the overall Solitaire diameter. Note that CrownAngle and CrownHeight are complementary ways of fixing the bezel facet geometry on the crown (above the girdle).
Specialized options of the Solitaire prism include: TableDiameter, GirdleThickness, CrownAngle, PavilionAngle, StarDiameter, BackFacetDiameter, CrownHeight, PavilionDepth, CuletAngle, and CuletDiameter.

CuletAngle

CuletAngle is an option of the Solitaire prism that denotes the full angle (in degrees) spanned by the solitaire vertex (culet). Note that CuletAngle, PavilionDepth, and PavilionAngle are all complementary ways of defining the facet dimensions on the pavilion (below the girdle).
Specialized options of the Solitaire prism include: TableDiameter, GirdleThickness, CrownAngle, PavilionAngle, StarDiameter, BackFacetDiameter, CrownHeight, PavilionDepth, CuletAngle, and CuletDiameter.

CuletDiameter

CuletDiameter is an option of the Solitaire prism that indicates the diameter of the solitaire vertex (culet) facet as a percentage of the overall Solitaire diameter.
Specialized options of the Solitaire prism include: TableDiameter, GirdleThickness, CrownAngle, PavilionAngle, StarDiameter, BackFacetDiameter, CrownHeight, PavilionDepth, CuletAngle, and CuletDiameter.

CurvatureDirection

CurvatureDirection is an option of convex and concave lenses that specifies which side of the created lens is curved as indicated by word values Front or Back.
If Front is used, then the curved side is placed at the origin and the planar side is created one thickness position down the x axis.

CurvatureTolerance

CurvatureTolerance is a database rule name that specifies the manufacturing radius-of-curvature tolerances of an optical component expressed as a percentage.
CurvatureTolerance can also apply to non-spherical, curved components such as parabolic mirrors.

CustomBaffle

CustomBaffle[surfacefunction, aperture, label, options] and CustomBaffle[surfacefunction, aperture, thickness, label, options] designate a light-absorbing component that has a user-defined surfacefunction.

Here, the user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. The component shape, given by surfacefunction, is specified either by a function of two variables or by Function[0.] for planar surfaces. CustomBaffle is created with its surface centered about the origin. The aperture parameter may designate a circle, rectangle, or polygon depending on the number and type of elements listed by it.

CustomBeamSplitter

CustomBeamSplitter[surfacefunction, {percentreflected, percenttransmitted}, aperture, objectlabel, label, options] and CustomBeamSplitter[surfacefunction, {percentreflected, percenttransmitted}, aperture, thickness, label, options] denote a component that partially reflects and partially transmits rays of light that has a user-defined surfacefunction.
The component shape, given by surfacefunction, is specified either by a function of two variables or by Function[0.] for planar surfaces. BeamSplitter is created with its splitting surface centered about the origin. The aperture parameter may denote a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

CustomBirefringentLensSurface

CustomBirefringentLensSurface[surfacefunction, axisangle, aperture, label, options] indicates a component that has a user-defined surfacefunction that models the refractive index boundary.
CustomBirefringentLensSurface is always used in combination with one or more additional BirefringentLensSurface component types to create a complete optical element. The component shape, given by surfacefunction, is specified either by a function of two variables or by Function[0.] for planar surfaces. CustomBirefringentLensSurface is created with its surface centered about the origin. CustomBirefringentLensSurface uses the option ComponentMedium -> {mediumA, mediumB} to designate the type of birefringent optical material with the alignment axis of materialA given by axisangle. Otherwise, ComponentMedium -> {{mediumO, mediumE}, isotropicmedium} specifies the interface with an isotropic material other than the default IntrinsicMedium setting. The aperture parameter may indicate a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.
See also: BirefringentLensSurface, LinearPolarizer, RetardationPlate, and JonesMatrixOptic.

CustomBranchingSurface

CustomBranchingSurface[surfacefunction, aperture, componentincrement, objectlabel, label, options] designates a component that causes intersecting rays to branch to a different component position relative to the list position held by CustomBranchingSurface.
The component shape, given by surfacefunction, is specified either by a function of two variables or by Function[0.] for planar surfaces. CustomBranchingSurface is usually employed after a beam-splitter-type component, in order to redirect split rays down a different component-listing pathway, thereby shortening ray-trace calculation times. CustomBranchingSurface is not visually rendered, but can be used to sample the ray/surface positions. CustomBranchingSurface is created with its surface centered about the origin. The aperture parameter may specify a circle, rectangle, or polygon depending on the number and type of elements listed by it. Because CustomBranchingSurface is not supported by TurboTrace, it now has limited application with the new version of Rayica. As such it is recommended to use the Resonate function instead.
The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

CustomConjugateBeamSplitter

CustomConjugateBeamSplitter[surfacefunction, {percentreflected, percenttransmitted}, aperture, label, options] and CustomConjugateBeamSplitter[surfacefunction, {percentreflected, percenttransmitted}, aperture, thickness, label, options] denote a component that partially conjugate-reflects and partially transmits rays of light that has a user-defined surfacefunction.
The component shape, given by surfacefunction, is specified either by a function of two variables or by Function[0.] for planar surfaces. BeamSplitter is created with its splitting surface centered about the origin. The aperture parameter may denote a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

CustomConjugateMirror

CustomConjugateMirror[surfacefunction, aperture, label, options] and CustomConjugateMirror[surfacefunction, aperture, thickness, label, options] designate a phase-conjugate mirror that has a user-defined surfacefunction.
The thickness refers to the refractive substrate of the mirror. If no thickness value is given, the component is a single-sided mirror. The component shape, given by surfacefunction, is specified either by a function of two variables or by Function[0.] for planar surfaces. CustomConjugateMirror is created with its surface centered about the origin. The aperture parameter may designate a circle, rectangle, or polygon depending on the number and type of elements listed by it. Hole -> holeaperture creates hole in the mirror. Depending on the InputEdgeThickness option setting, the thickness parameter may denote either the small edge thickness or the center thickness of the component. With InputEdgeThickness -> True, the thickness parameter is taken for the maximum edge thickness. The Centered option can be used to change substrate rear surface position in off-axis parabolic mirrors. For Centered -> True indicates that the substrate rear surface is located directly behind and parallel with the local off-axis mirror surface. With Centered -> True only InputEdgeThickness -> True is recognized. For Centered -> False, the substrate orientation remains fixed with the y-z plane and parallel with the parabolic vertex. In addition, Centered -> False changes the specified aperture is taken for the projected boundary shape onto the y-z plane (as seen from projection down the primary optical (x) axis). For Centered -> True, the specified aperture is taken as the actual boundary shape of the off-axis surface (as seen by projection down the local surface normal). The Centered -> Automatic option automatically changes its value to fit best with other options settings of CustomConjugateMirror.
The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

CustomDeflectionFunction

CustomDeflectionFunction is a label of DeflectionFunction that designates a user-defined deflection.

CustomDeflections

CustomDeflections[component, raydeflectfunction, functionlabel, options] is a generic building block that allows the user to create custom ray-tracing functions.

CustomDiffuser

CustomDiffuser[surfacefunction, scatteringparameter, aperture, label, options], CustomDiffuser[surfacefunction, scatteringparameter, aperture, thickness, label, options], and CustomDiffuser[{surfacefunction1, surfacefunction2}, scatteringparameter, aperture, thickness, label, options] denote a custom-shaped component that splits incoming rays into diffused rays rays using the ray scattering distribution pattern given in scatteringparameter.
The scatteringparameter can either be light source function or a listing of one or more angles that describe the scattering behavior. If a light source function is specified, then the ScatterRays function is called internally. An example of a light-source scatteringparameter is WedgeOfRays[90, NumberOfRays->1, MonteCarlo -> True]. Otherwise, if a single number or a list of numeric scatter angles are passed in the scatteringparameter, then AddRandomRayTilt is called instead. Three examples of this are: 90, {90,90}, and {{-45,45},{-45,45}}.
The thickness refers to the refractive substrate of the diffuser. If no thickness value is given, the component is a single-sided diffuser.
CustomDiffuser refers to a component that has a user-defined surfacefunction. The component shape, given by surfacefunction, is specified either by a function of two variables or by Function[0.] for planar surfaces. CustomDiffuser weights the scattered ray Intensity values according to seed ray Intensity values. For Lambertian->True, the scattered rays are oriented about the surface normal. For Lambertian->False, the scattered rays are oriented with the incoming ray direction. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: ScatterRays, AddRandomRayTilt, Diffuser, DiffuserMirror, SphericalDiffuserMirror, and CustomDiffuserMirror.

CustomDiffuserMirror

CustomDiffuserMirror[surfacefunction, scatteringparameter, aperture, label, options], CustomDiffuserMirror[surfacefunction, scatteringparameter, aperture, thickness, label, options], and CustomDiffuserMirror[{surfacefunction1, surfacefunction2}, scatteringparameter, aperture, thickness, label, options] denote a custom-shaped component that splits incoming rays into diffused rays reflected rays using the ray scattering distribution pattern given in scatteringparameter.
The scatteringparameter can either be light source function or a listing of one or more angles that describe the scattering behavior. If a light source function is specified, then the ScatterRays function is called internally. An example of a light-source scatteringparameter is WedgeOfRays[90, NumberOfRays->1, MonteCarlo -> True]. Otherwise, if a single number or a list of numeric scatter angles are passed in the scatteringparameter, then AddRandomRayTilt is called instead. Three examples of this are: 90, {90,90}, and {{-45,45},{-45,45}}.
The thickness refers to the refractive substrate of the diffuser. If no thickness value is given, the component is a single-sided diffuser. CustomDiffuserMirror refers to a component that has a user-defined surfacefunction. The component shape, given by surfacefunction, is specified either by a function of two variables or by Function[0.] for planar surfaces. CustomDiffuser weights the scattered ray Intensity values according to seed ray Intensity values. For Lambertian->True, the scattered rays are oriented about the surface normal. For Lambertian->False, the scattered rays are oriented with the incoming ray direction. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: ScatterRays, AddRandomRayTilt, Diffuser, DiffuserMirror, SphericalDiffuserMirror, and CustomDiffuser.

CustomFiber

CustomFiber[{fx, fy, fz}, {corediameter, claddingdiameter}, length, label, options] designates a curved, stepped-index optical fiber that follows a curve specified in the parametric functions, {fx, fy, fz}.
The refractive core and cladding materials are given by the option, ComponentMedium -> {corematerial, claddingmaterial}. CustomFiber[{fx, fy, fz}, corediameter, length, options] indicates a bare optical fiber. CustomFiber can also have an elliptical cross section with the option EllipseRatio. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: Fiber, CustomFiberMirror, and CreateFiberShape.

CustomFiberMirror

CustomFiberMirror[{fx, fy, fz}, diameter, length, label, options] designates a curved, reflective, fiber-like tube that follows a curve specified in the parametric functions, {fx, fy, fz}.
CustomFiberMirror can also have an elliptical cross section with the option EllipseRatio. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: Fiber, CustomFiber, and CreateFiberShape.

CustomGeneticFunction

CustomGeneticFunction is now replaced by CustomDeflections.

CustomGrating

CustomGrating[surfacefunction, gratingfunction, aperture, label, options] and CustomGrating[surfacefunction, gratingfunction, aperture, thickness, label, options] denote a diffractive component that splits incoming rays into multiple diffracted orders according to the gratingfunction parameter and the DiffractedOrders option.
The thickness refers to the refractive substrate of the grating. If no thickness value is given, the component is a single-sided grating. According to the GratingThickness option, a refractive part may be present in the grating.
CustomGrating refers to a component that has a user-defined surfacefunction. The component shape, given by surfacefunction, is specified either by a function of two variables or by Function[0.] for planar surfaces. For double-sided components a list of two surfacefunctions is used. The gratingfunction parameter specifies a grating vector either as a one-dimensional value, Gy, a two-dimensional list of values, {Gy, Gz}, a three-dimensional list of values, {Gx, Gy, Gz}, or a three-dimensional function, Function[{s,t}, {Gx[s,t], Gy[s,t], Gz[s,t]}], in which {Gx, Gy, Gz} specify the indicated grating directions with the grating surface initially oriented parallel to the y-z plane. These vector quantities have units of spatial frequency and are given in line pairs per millimeter. A single number used in the grating parameter indicates a uniformly distributed grating vector pointing in the direction of the y axis. A list of two numbers designates a uniformly distributed grating vector whose direction lies within the surface plane.

If you compare results with calculations by hand, please keep track of the correspondence of the options VacuumFrequency and GratingMedium. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: GratingTheory, EfficiencyFunction, GratingMirror, SphericalGratingMirror, and Diffraction.

CustomGratingMirror

CustomGratingMirror[surfacefunction, gratingfunction, aperture, label, options] and CustomGratingMirror[surfacefunction, gratingfunction, aperture, thickness, label, options] designate a diffractive, reflective component that splits incoming rays into multiple diffracted, reflected orders according to the gratingfunction parameter and the DiffractedOrders option.
The thickness refers to the refractive substrate of the grating. If no thickness value is given, the component is a single-sided grating. According to the GratingThickness option, a refractive part may be present in the grating.  CustomGratingMirror refers to a component that has a user-defined surfacefunction. The component shape, given by surfacefunction, is specified either by a function of two variables or by Function[0.] for planar surfaces. The gratingfunction parameter specifies a grating vector either as a one-dimensional value, Gy, a two-dimensional list of values, {Gy, Gz}, a three-dimensional list of values, {Gx, Gy, Gz}, or a three-dimensional function, Function[{s,t}, {Gx[s,t], Gy[s,t], Gz[s,t]}], in which {Gx, Gy, Gz} specify the indicated grating directions with the grating surface initially oriented parallel to the y-z plane. These vector quantities have units of spatial frequency and are given in line pairs per millimeter. A single number used in the grating parameter indicates a uniformly distributed grating vector pointing in the direction of the y axis. A list of two numbers relates to a uniformly distributed grating vector whose direction lies within the surface plane.

If you compare results with calculations by hand, please keep track of the correspondence of the options VacuumFrequency and GratingMedium. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: GratingTheory, EfficiencyFunction, GratingMirror, Grating, and Diffraction.

CustomGratingSurface

CustomGratingSurface is obsolete. Please use CustomGrating with no thickness instead.

CustomIntrinsicSurface

CustomIntrinsicSurface[surfacefunction, aperture, medium1, medium2, label, options] indicates a component that has a user-defined surfacefunction that models the refractive index boundary between two different refractive mediums.
The component shape, given by surfacefunction, is specified either by a function of two variables or by Function[0.] for planar surfaces. Refractive components encountered by rays that have previously encountered CustomIntrinsicSurface are refracted using the new IntrinsicMedium value given by IntrinsicSurface. CustomIntrinsicSurface uses parameters medium1 and medium2 to obtain intrinsic index functions on each side of the fluid boundary. If the ray is coming from an environment that has an intrinsic index given by medium1, then the value of IntrinsicMedium of the Ray object is replaced by medium2. Likewise, if the ray is coming from an environment that has an intrinsic index given by medium2, then the value of IntrinsicMedium of the Ray object is replaced by medium1. CustomIntrinsicSurface is created with its surface centered about the origin. The aperture parameter may indicate a circle, rectangle, or polygon depending on the number and type of elements listed by it.

The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics. Please mote that all IntrinsicSurface-related functions are only intended for very specialized applications that involve changing the surrounding ambient environment of an optical system and are seldom ever used. For most applications involving refractive surfaces, a LensSurface-type function should be used instead.

See also: the SwitchIntrinsicMedium genetic building block. IntrinsicSurface, IntrinsicSphericalSurface, and IntrinsicCylindricalSurface are all related components.

CustomJonesMatrixOptic

CustomJonesMatrixOptic[surfacefunction, Jonesmatrix, axisangle, aperture, thickness, label, options] is the underlying function of JonesMatrixOptic to create curved optics.

If the thickness parameter is zero or is omitted, then the optic will be created without any thickness. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

CustomLens

CustomLens[f1, f2, aperture, thickness, label, options] designates a double-surfaced refractive component having user-defined surface functions.
The surfaces are given by f1 and f2, where f1 and f2 are three-dimensional surface equations, and Function[0.] is used to specify planar surfaces. CustomLens is created with its first surface centered about the origin and its second surface positioned down the x axis. The aperture parameter may denote a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

CustomLensSurface

CustomLensSurface[surfacefunction, aperture, label, options] indicates a component that has a user-defined surfacefunction that models the refractive index boundary at a lens surface.
CustomLensSurface is always used in combination with one or more additional LensSurface component types to create a complete lens object. The component shape, given by surfacefunction, is specified either by a function of two variables or by Function[0.] for planar surfaces. CustomLensSurface is created with its surface centered about the origin. The aperture parameter may indicate a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.
See also: SurfaceFacet, LensSurface, SphericalLensSurface, CylindricalLensSurface, ParabolicLensSurface, and CustomLensSurface.

CustomLinearPolarizer

CustomLinearPolarizer[surfacefunction, axisangle, aperture, thickness, label, options] is the underlying function of LinearPolarizer to create curved optics.

If the thickness parameter is zero or is omitted, then the optic will be created without any thickness. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

CustomMirror

CustomMirror[surfacefunction, aperture, objectlabel, options] and CustomMirror[surfacefunction, aperture, thickness, objectlabel, options] designate a mirror that has a user-defined surfacefunction, and a user-named objectlabel.
The thickness refers to the refractive substrate of the mirror. If no thickness value is given, the component is a single-sided mirror. The component shape, given by surfacefunction, is specified either by a function of two variables or by Function[0.] for planar surfaces. CustomMirror is created with its surface centered about the origin. The aperture parameter may designate a circle, rectangle, or polygon depending on the number and type of elements listed by it. Hole -> holeaperture creates hole in the mirror. Depending on the InputEdgeThickness option setting, the thickness parameter may denote either the small edge thickness or the center thickness of the component. With InputEdgeThickness -> True, the thickness parameter is taken for the maximum edge thickness. The Centered option can be used to change substrate rear surface position in off-axis parabolic mirrors. For Centered -> True indicates that the substrate rear surface is located directly behind and parallel with the local off-axis mirror surface. With Centered -> True only InputEdgeThickness -> True is recognized. For Centered -> False, the substrate orientation remains fixed with the y-z plane and parallel with the parabolic vertex. In addition, Centered -> False changes the specified aperture is taken for the projected boundary shape onto the y-z plane (as seen from projection down the primary optical (x) axis). For Centered -> True, the specified aperture is taken as the actual boundary shape of the off-axis surface (as seen by projection down the local surface normal). The Centered -> Automatic option automatically changes its value to fit best with other options settings of CustomMirror.
The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

CustomPrism

CustomPrism[facetpointlisting, label, options] creates a multi-faceted prism with user-specified optical properties.
As its first parameter, CustomPrism accepts either a Graphics3D object or a nested list of three-dimensional points to describe the facet vertices. The optical properties of CustomPrism are specified by the SurfaceType option. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression.

See also: SurfaceType and SurfaceFacet.

CustomRays

CustomRays[seed, {{name, vector}..}, options] initializes a set of user-defined rays.

The name parameter designates an optionname of Ray, the vector contains the corresponding values. For example {RayStart, Flatten[Table[{0, i, j}, {i, -3, 3}, {j, -2, 2}], 1]} can be used to define a planar equidistant grid of rays. All vector parameters must have the same dimension or an integer multiple of the shortest vector. For ResolvePoints -> True, every data point that generates a ray is considered to be an independent source.

The seed parameter is optional and is used to generate more elaborate ray patterns. When it is present, it specifies additional light sources to be nested with the basic CustomRays result. When PropagateSystem is used for the ray trace, CustomRays produces a set of Ray objects. However, with TurboTrace calculations, a TurboRays object is generated from CustomRays instead.

See also: SingleRay, CircleOfRays, ConeOfRays, WedgeOfRays, LineOfRays, GridOfRays, PointOfRays, CustomRays, FieldOfRays, GaussianBeam, and RainbowOfRays.

CustomRetardationPlate

CustomRetardationPlate[surfacefunction, wavedifference, axisangle, aperture, thickness, label, options] is the underlying function of RetardationPlate to create curved optics.

If the thickness parameter is zero or is omitted, then the optic will be created without any thickness. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

CustomScreen

CustomScreen[surfacefunction, aperture, label, options] designates a component that intersects rays without disturbing them.
CustomScreen denotes a single-surfaced component that has a user-defined surfacefunction. The component shape, given by surfacefunction, is specified either by a function of two variables or by Function[0.] for planar surfaces. Although CustomScreen is usually not rendered, the ray/screen intersections can be rendered by using the DrawSystem option, PlotType->Surface. CustomScreen is created with its surface centered about the origin. The aperture parameter may denote a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

CylinderGraphic

CylinderGraphic[diameter, length, label, options] refers to a three-dimensional cylinder with one circular center placed at the origin and its length directed down the positive x axis.
CylinderGraphic can be created with a partially opened side wall, using the option OpenSide from Options[CylinderGraphic]. OpenSide takes values {startangle, finishangle} or False. CylinderGraphic does not interact with rays in any way, but can be listed with active components or with other graphics components for creating passive three-dimensional shapes. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression.

CylindricalBaffle

CylindricalBaffle[radius, aperture, label, options] and CylindricalBaffle[radii, aperture, thickness, label, options] refer to a cylindrical component that absorbs light.


CylindricalBaffle is created with its surface centered about the origin. The aperture parameter may indicate a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

CylindricalDiffuser

CylindricalDiffuser[radius, scatteringparameter, aperture, label, options] and CylindricalDiffuser[radius, scatteringparameter, aperture, thickness, label, options] denote a spherical, diffusing, component that splits incoming rays into diffused rays rays after an optical surface using the ray scattering distribution pattern given in scatteringparameter.
The scatteringparameter can either be light source function or a listing of one or more angles that describe the scattering behavior. If a light source function is specified, then the ScatterRays function is called internally. An example of a light-source scatteringparameter is WedgeOfRays[90, NumberOfRays->1, MonteCarlo -> True]. Otherwise, if a single number or a list of numeric scatter angles are passed in the scatteringparameter, then AddRandomRayTilt is called instead. Three examples of this are: 90, {90,90}, and {{-45,45},{-45,45}}.
The thickness refers to the refractive substrate of the diffuser. If no thickness value is given, the component is a single-sided diffuser. CylindricalDiffuser weights the scattered ray Intensity values according to seed ray Intensity values. For Lambertian->True, the scattered rays are oriented about the surface normal. For Lambertian->False, the scattered rays are oriented with the incoming ray direction. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: ScatterRays, AddRandomRayTilt, Diffuser, DiffuserMirror, CustomDiffuser, and CustomDiffuserMirror.

CylindricalDiffuserMirror

CylindricalDiffuserMirror[radius, scatteringparameter, aperture, label, options] and CylindricalDiffuserMirror[radius, scatteringparameter, aperture, thickness, label, options] denote a spherical, diffusing, reflective, component that splits incoming rays into diffused rays reflected rays after an optical surface using the ray scattering distribution pattern given in scatteringparameter.
The scatteringparameter can either be light source function or a listing of one or more angles that describe the scattering behavior. If a light source function is specified, then the ScatterRays function is called internally. An example of a light-source scatteringparameter is WedgeOfRays[90, NumberOfRays->1, MonteCarlo -> True]. Otherwise, if a single number or a list of numeric scatter angles are passed in the scatteringparameter, then AddRandomRayTilt is called instead. Three examples of this are: 90, {90,90}, and {{-45,45},{-45,45}}.
The thickness refers to the refractive substrate of the diffuser. If no thickness value is given, the component is a single-sided diffuser.
CylindricalDiffuserMirror weights the scattered ray Intensity values according to seed ray Intensity values. For Lambertian->True, the scattered rays are oriented about the surface normal. For Lambertian->False, the scattered rays are oriented with the incoming ray direction. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: ScatterRays, AddRandomRayTilt, Diffuser, DiffuserMirror, CustomDiffuser, and CustomDiffuserMirror.

CylindricalGratingMirror

CylindricalGratingMirror[radius, gratingfunction, aperture, label, options] and CylindricalGratingMirror[radius, gratingfunction, aperture, thickness, label, options] denote a spherical, diffractive, reflective, component that splits incoming rays into multiple diffracted, reflected orders according to the gratingfunction parameter and the DiffractedOrders option.
The thickness refers to the refractive substrate of the grating. If no thickness value is given, the component is a single-sided grating. According to the GratingThickness option, a refractive part may be present in the grating. The gratingfunction parameter specifies a grating vector either as a one-dimensional value, Gy, a two-dimensional list of values, {Gy, Gz}, a three-dimensional list of values, {Gx, Gy, Gz}, or a three-dimensional function, Function[{s,t}, {Gx[s,t], Gy[s,t], Gz[s,t]}], in which {Gx, Gy, Gz} specify the indicated grating directions with the grating surface initially oriented parallel to the y-z plane. These vector quantities have units of spatial frequency and are given in line pairs per millimeter. A single number used in the grating parameter denotes a uniformly distributed grating vector pointing in the direction of the y axis. A list of two numbers indicates a uniformly distributed grating vector whose direction lies within the surface plane.

If you compare results with calculations by hand, please keep track of the correspondence of the options VacuumFrequency and GratingMedium. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: GratingTheory, Grating, Diffraction, and Reflection.

CylindricalLens

CylindricalLens[r1, r2, aperture, thickness, label, options] specifies a lens having cylindrical surfaces.
The radii of curvatures are specified by r1 and r2 where Infinity is used to specify planar surfaces. CylindricalLens is created with its first surface centered about the origin and its second surface positioned down the x axis. The aperture parameter may denote a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

CylindricalLensSurface

CylindricalLensSurface[radius, aperture, label, options] refers to a cylindrical component occupying half a complete cylinder that models the refractive index boundary at a lens surface.
CylindricalLensSurface is always used in combination with one or more additional LensSurface component types to create a complete lens object. CylindricalLensSurface is created with its surface centered about the origin. The aperture parameter may designate a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.
See also: SurfaceFacet, LensSurface, SphericalLensSurface, CylindricalLensSurface, ParabolicLensSurface, and CustomLensSurface.

CylindricalMirror

CylindricalMirror[radius, aperture, label, options] and CylindricalMirror[radius, aperture, thickness, label, options] refer to a cylindrical mirror.
The thickness refers to the refractive substrate of the mirror. If no thickness value is given, the component is a single-sided mirror. CylindricalMirror is created with its surface centered about the origin. The aperture parameter may specify a circle, rectangle, or polygon depending on the number and type of elements listed by it. FlatSubstrate -> True creates the mirror on a flat-backed substrate. Hole -> holeaperture creates hole in the mirror. Depending on the InputEdgeThickness option setting, the thickness parameter may denote either the small edge thickness or the center thickness of the component. With InputEdgeThickness -> True, the thickness parameter is taken for the edge thickness.
The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

CylindricalScreen

CylindricalScreen[radius, aperture, label, options] designates a cylindrical component that intersects rays without disturbing them.
Although CylindricalScreen is usually not rendered, the ray/screen intersections can be rendered by using the DrawSystem option, PlotType->Surface. CylindricalScreen is created with its surface centered about the origin. The aperture parameter may specify a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

CylindricalShape

CylindricalShape is a value of SurfaceLabel within Component that denotes the cylindrical SurfaceFunction.

DataToRayica

DataToRayica[databaselist, options] is used to build models in Rayica of optical components, light sources, coatings, and materials from the information given in databaselist. DataToRayica[databaselist, selectionproperties, options] first calls SearchData to select for specific data items.
DataToRayica automatically recognizes the appropriate model format for each type of data entry. DataToRayica first passes databaselist and selectionproperties to SearchData. If no databaselist is directly given, DataToRayica uses the internally loaded catalog database according to the specified selectionproperties. DataToRayica uses the ReportedInterval option to restrict the maximum number of models created at one time. Note that DataToRayica may not use all present database information within the actual optical component models. See also: SearchData, ReadData, LoadData, SaveData, EditData, ExcelToData, DataToExcel, KDPToData, and ZemaxToData.

DefaultAngleSetting

DefaultAngleSetting is an option of some built-in component functions that specifies one or more default settings for internal angles of the component.

DefaultGRINIndex

DefaultGRINIndex specifys an spatial-dependent, axial-symmetric refractive index model that is given by the function: Function[(2.5-.04*Dot[SurfaceCoordinates,SurfaceCoordinates])/.#]. This is used by GRINLens when no other index model has been specified by the user. See also: GRINLens, GradeRefraction.

DefaultStyle

DefaultStyle -> primitiveslist is an option of ShowSystem that gives a list of graphic primitives to be prepended to every component rendering and component label. See also: EdgeStyle, SurfaceStyle, CrossStyle.

DeflectionFunction

DeflectionFunction -> functionlisting denotes the ray-tracing behavior at component surfaces.
DeflectionFunction is used both as a function and as a rule parameter label in Component. As a rule parameter label, DeflectionFunction -> functionlisting is contained within the Deflections rule of Component, where functionlisting can be in a direct or indirect form. In the direct form, the ray-tracing function is explicitly defined by the functionlisting. In this case, DeflectionFunction -> Function[#] specifies a pure function that uses in its input a list of objects specified by TakeFrom and returns its results to the objects specified by AddTo and ReplaceFor as a list of modified Ray or Component objects carrying only the ray or component parameters being modified. In the indirect form, the ray-tracing function is defined elsewhere, and only parameter values are passed, rather than the actual ray-tracing function definition in the functionlisting. In this case, DeflectionFunction -> {deflectionlabel, {inputparameters}} uses deflectionlabel as an identifying label to call up the appropriate external ray-tracing function. In the case of indirect ray-tracing function definitions, DeflectionFunction also plays a role as the external function head. Here, DeflectionFunction[deflectionlabel, inputparameters] = Function[#] denotes the external ray-tracing function identified by deflectionlabel. See also: Deflections, DeflectionLabel, AddTo, ReplaceFor, and TakeFrom.

DeflectionID

DeflectionID is a rule embedded within Deflections of Component that specifies a unique identification number.
DeflectionID is usually determined by the function Unique during the creation of a deflection. As a rule of Ray, DeflectionID indicates the deflection encountered by the ray segment. See also: BuildComponent, ComponentFoundation, Component.

DeflectionLabel

DeflectionLabel -> functionname denotes the ray-tracing behavior at component surfaces with the function that created the Deflections parameter. See also: Deflections, DeflectionFunction, AddTo, ReplaceFor, and TakeFrom.

DeflectionNumber

DeflectionNumber is a rule embedded within ConfinedPaths of Component that gives the slot positions of ray-tracing functions listed in Deflections.
DeflectionNumber designates all ray-tracing functions used when a ray hits the given surface. Each ray-tracing function is called up in sequence with its list position in DeflectionNumber.

Deflections

Deflections -> {{functionelement1, functionelement2, ...}, {...}, ...} is a rule giving a list of elements that define the various functions used in tracing rays within a component.
Each functionelement of Deflections follows a standard format.
{TakeFrom -> {takefromobjects}, AddTo -> {addtoobjects}, DeflectionFunction -> functionlisting}
Here takefromobjects denotes the objects used by DeflectionFunction and addtoobjects specifies the objects given by DeflectionFunction. In some cases, ReplaceFor is used instead of AddTo.

DegreeUnits

DegreeUnits -> True/False is an option that determines whether angular parameters have units of degrees or radians.

DeleteRecoveredOptions

DeleteRecoveredOptions is an option of BuildComponent and RecoverInput that indicates whether echoed input system expression is stripped of system options.
The DeleteRecoveredOptions -> True is be used to delete all options from the echoed input system. This gives an much shorter expression with incomplete information that is easier to read. DeleteRecoveredOptions -> False is the default setting that retains all of relevant option settings. DeleteRecoveredOptions->True is used in conjunction with the BuildComponent->True to study the internal working structure of a Component definition.

DensityValues

DensityValues -> True is an option of ShowValue and ShowSurfacePlot that scales the plotted values with the number of all source rays, so that the plot is independent of this number. DensityValues -> False leads to plots increasing in z values with the number of source rays.See also: ShowValue, ShowSurfacePlot.

DesignRefractiveIndex

DesignRefractiveIndex is a database rule name that specifies a refractive index of a lens element at the design wavelength.
See also: DesignWaveLength.

DesignWaveLength

DesignWaveLength is an option of most built-in lens functions that indicates the design wavelength value used in calculating the lens curvatures from the focal length specified.

Dielectric

Dielectric is a value of Theory, for example returned by ModelRefractionTheory, to characterize a dielectric medium.

DiffractedOrders

DiffractedOrders is an option that indicates the number of diffracted orders generated during diffraction.
DiffractedOrders uses a list of ordered paired numbers that has a length of any size. The left number in each pair is an integer that specifies the diffracted order. The right number in each pair has a value between 0.0 and 1.0 that denotes the relative order strength. DiffractedOrders is an option of all grating components, as well as the Diffraction genetic building block. However, it is only active with CoupledWaveTheory -> False. See also: CoupledWaveTheory, Diffraction and Grating.

Diffraction

Diffraction[component, gratingfunction, options] is a genetic building block that produces diffracted rays through optical surfaces according to the gratingfunction parameter.

The gratingfunction parameter specifies a grating vector either as a one-dimensional value, Gy, a two-dimensional list of values, {Gy, Gz}, a three-dimensional list of values, {Gx, Gy, Gz}, or a three-dimensional function, Function[{Gx[s,t], Gy[s,t], Gz[s,t]}], in which {Gx, Gy, Gz} specify the indicated grating directions with the grating surface initially oriented parallel to the y-z plane. These vector quantities have units of spatial frequency and are given in line pairs per millimeter. A single number used in the grating parameter refers to a uniformly distributed grating vector pointing horizontally with the surface. A list of two numbers indicates a uniformly distributed grating vector whose direction lies within the surface plane. An example of a functional grating parameter is Function[{0.,1500.,0.}], which creates a uniform grating vector having 1500 lines per millimeter, pointing horizontally down the y axis.

The gratingvector may depend on the values of the options: SurfaceCoordinates (as sequence), Temperature, Tension. Initially the grating vector starts in global {x, y, z} coordinates. The final orientation of the grating depends on three coordinate transformations. First, the gratingvector is transformed to the system given in the GratingRotationMatrix option. For PlanarShape set to True, this is transformed into the system given by the local surface curvature direction. Finally, the RotationMatrix of the surface transforms the gratingvector into global coordinates. The "bending" of the grating, the second transformation, does not take into account any strain of the grating.


Diffraction creates multiple diffracted rays according to the DiffractedOrders option or according to the CoupledWaveTheory option. Diffraction does not take into account any refraction. For a thick grating, Refraction must be placed both before and after Diffraction to get physically correct results.

Diffraction returns RayTilt, WaveTilt, Intensity, Polarization, MaterialSpecification and DiffractionOrderNumber as ray parameters.

If you compare results with calculations by hand, please keep track of the correspondence of the options VacuumFrequency and IntrinsicMedium. See also Grating.

DiffractionLimitedRange

DiffractionLimitedRange -> {lowwavelength, highwavelength} is a database rule name for a lens that specifies the range of wavelengths in microns for which the lens is diffraction limited.
See also: TransmissionRange and WaveLengthRange.

DiffractionMismatch

DiffractionMismatch is a rule of Ray returned by diffractive components that denotes the mismatch fraction of the diffracted ray.
The mismatch fraction is defined as the difference in magnitude between the incident wave vector and the diffracted wave vector divided by the magnitude of the incident wave vector. DiffractionMismatch can take on both positive and negative values. See also: EfficiencyFunction, MismatchCutOff, Diffraction, GratingSurface, and GratingMirror.

DiffractionOrderNumber

DiffractionOrderNumber is a rule of Ray returned by diffractive components that relates to the diffraction order of the ray.
See also: DiffractedOrders, Diffraction, GratingSurface, and GratingMirror.

Diffuser

Diffuser[scatteringparameter, aperture, label, options] and Diffuser[scatteringparameter, aperture, thickness, label, options] denote a planar component that splits incoming rays into diffused rays using the ray scattering distribution pattern given in scatteringparameter.
The scatteringparameter can either be light source function or a listing of one or more angles that describe the scattering behavior. If a light source function is specified, then the ScatterRays function is called internally. An example of a light-source scatteringparameter is WedgeOfRays[90, NumberOfRays->1, MonteCarlo -> True]. Otherwise, if a single number or a list of numeric scatter angles are passed in the scatteringparameter, then AddRandomRayTilt is called instead. Three examples of this are: 90, {90,90}, and {{-45,45},{-45,45}}.
The thickness refers to the refractive substrate of the diffuser. If no thickness value is given, the component is a single-sided diffuser. Diffuser weights the scattered ray Intensity values according to seed ray Intensity values. For Lambertian->True, the scattered rays are oriented about the surface normal. For Lambertian->False, the scattered rays are oriented with the incoming ray direction. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: ScatterRays, AddRandomRayTilt, DiffuserMirror, SphericalDiffuserMirror, CustomDiffuser, and CustomDiffuserMirror.

DiffuserMirror

DiffuserMirror[scatteringparameter, aperture, label, options] and DiffuserMirror[scatteringparameter, aperture, thickness, label, options] denote a planar component that splits incoming rays into diffused rays reflected rays after an optical surface using the ray scattering distribution pattern given in scatteringparameter.
The scatteringparameter can either be light source function or a listing of one or more angles that describe the scattering behavior. If a light source function is specified, then the ScatterRays function is called internally. An example of a light-source scatteringparameter is WedgeOfRays[90, NumberOfRays->1, MonteCarlo -> True]. Otherwise, if a single number or a list of numeric scatter angles are passed in the scatteringparameter, then AddRandomRayTilt is called instead. Three examples of this are: 90, {90,90}, and {{-45,45},{-45,45}}.
The thickness refers to the refractive substrate of the diffuser. If no thickness value is given, the component is a single-sided diffuser. DiffuserMirror weights the scattered ray Intensity values according to seed ray Intensity values. For Lambertian->True, the scattered rays are oriented about the surface normal. For Lambertian->False, the scattered rays are oriented with the incoming ray direction. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: ScatterRays, AddRandomRayTilt, Diffuser, SphericalDiffuserMirror, CustomDiffuser, and CustomDiffuserMirror.

DimensionalTolerance

DimensionalTolerance is a database rule name that specifies the manufacturing dimensional tolerances of an optical component expressed in units of either +- mm or as a percentage of the overall dimensions (indicated by a % sign). See also: ThicknessTolerance and AngleTolerance.

DirectionChange

DirectionChange is an unauthorized rule of Ray that is an internal flag variable. It is used by TurboTrace and Diffraction to indicate a reflection.

DirectVisionPrism

DirectVisionPrism[length, thickness, label, options] is constructed from three prisms cemented together that act as a dispersing element where spectral separation is required without any additional deviation of the beam.
The outer elements of DirectVisionPrism are commonly made from crown glass while the center element is made from flint glass. The length parameter gives the overall length of the component's base. DirectVisionPrism is normally aligned with its entrance face at x = 0 and the exit face positioned along the x-axis. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: Prism, RhomboidPrism, WedgePrism, and PellinBrocaPrism.

Dispersion

Dispersion -> {{nd, vd}, {ne, ve}, nf-nc, nfprime-ncprime} is a database rule name that specifies a traditional set of numbers to indicate how dispersive a given glass is.

DistortionGrid

DistortionGrid[seed, gridsize, gridpoints] creates a grid of rays to display the image distortion of an optical system.

The grid is rectangular in shape, where its dimensions are given by the gridsize parameter and the number of points along each grid dimension is specified by the gridpoints parameter. Both gridsize and gridpoints parameters may be given either as a single numeric value (to create a one-dimensional set of points) or as a list of two numeric values (to create a two-dimensional array of points).

The seed parameter is optional and is used to generate more elaborate ray patterns. When it is present, it specifies additional light sources to be nested with the basic DistortionGrid result. However, when DistortionGrid is used in conjunction with FindFocalSurface, the seed parameter should be included using a point-source function, such as PointOfRays. DistortionGrid calls CustomRays internally and is principally used by FindFocalSurface.

See also FindFocalSurface.

DistributeValues

DistributeValues -> True is an option of ShowValue and ShowSurfacePlot that specifies, that a ray is distributed over all adjacent elements, taking into account its distance to the elements.See also: ShowValue, ShowSurfacePlot.

DoubleSubstrate

DoubleSubstrate -> True/False indicates that the optical component consists of two thick optical substrates that are sandwiched together.
At the moment, DoubleSubstrate is only implemented with flat Grating functions.

DovePrism

DovePrism[width, length, label, options] refers to a six-sided prism having trapezoidal dimensions on two sides and rectangular dimensions on the remaining sides.
DovePrism[width, slantlength, length, label, options] is another pattern for DovePrism. DovePrism is commonly used as an image rotator. As the prism is rotated, the image that passes through it will rotate at twice the angular rate of the prism. DovePrism uses internal reflection off the hypotenuse face to rotate the image. The hypotenuse face of a dove prism is the face of the largest area. If the Mirrored -> True option is given, a reflective-coated surface is placed on the reflecting face of the prism. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: PechanPrism, PentaPrism, ReversionPrism, RoofPrism, and Prism.

DovePrismMirrored

DovePrismMirrored is obsolete. Use DovePrism with the Mirrored -> True option instead.

DrawSystem

DrawSystem[system, options] takes a system of light sources and optical elements defined by a mixed list of Source and Component objects, traces the rays through the components, and renders the results according to the PlotType, RayChoice, ShowRange, and ColorView options.
The option ShowSystem -> False can be used to suppress rendering and return an OpticalSystem. DrawSystem calls PropagateSystem and ShowSystem. DrawSystem passes options to Graphics and Graphics3D. See also PropagateSystem, AnalyzeSystem, TurboTrace, and TurboPlot.

DTIRCLens

DTIRCLens[cf, exitaperture, label, options] defines a Dielectric Total Internal Reflecting Concentrator (DTIRC) having a spherical entrance surface, functionally defined tapered sides, and a planar exit surface.
Parameters for the functional shape are contained in cf, i.e., {C0,C1,C2,C3,C4,r,ap}, where C0 through C4 are coefficients for a fourth order polynomial defining the shape of the sides, r1 is the radius of the spherical surface, and ap is the maximum diameter of the DTIRCLens at the intersection of the sides and spherical entrance surface. The variable exitaperture is used to scale the specified DTIRCLens shape to provide the desired aperture for the planar exit surface.
DTIRCLens is created with the center of the spherical lens centered at the origin and the center of the planar exit surface positioned down the positive x axis. DTIRCLens is used in light gathering applications. (This is an experimental component contributed by William Cottingame, UCLA.) The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also DTIRCLensSurface, FunnelLens, FunnelLensSurface, SnowConeLens, SquareConeMirror, and WinstonConeMirror.

DTIRCLensSurface

DTIRCLensSurface[entranceaperture, cf, length, label, options] designates a functionally defined tapered surface to describe a Dielectric Total Internal Reflecting Concentrator (DTIRC).
DTIRCLensSurface is used internally by DTIRCLens, but is not normally ever used directly and has only been made public for experimental purposes. Coefficients of a fourth order polnominal, contained in cf, have been optimized for a specific case, are calculated elsewhere, and are of a different form from the cf parameter defined for DTIRCLens. DTIRCLensSurface is created with its entrance aperture centered about the origin and its exit aperture positioned down the positive x axis. DTIRCLensSurface is used in light gathering applications. (This is an experimental component contributed by William Cottingame, UCLA.) The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.
See also DTIRCLens, FunnelLens, FunnelLensSurface, SnowConeLens, SquareConeMirror, and WinstonConeMirror.

DummyRay

DummyRay is a placeholder inside HeldTraceKernel that designates a temporary ray object that is deleted before the ray trace is completed.

EdgeRendering

EdgeRendering is an option of ComponentRendering that indicates the graphical rendering of an annular surface that joins the two outer perimeters of a double-sided component. In the prism component, EdgeRendering is used to define the two triangular faces of the prism.
EdgeRendering may take the values: Fill, Trace, Mesh, Empty, and {Fill, Mesh}. See also: ComponentRendering, SurfaceRendering, CrossRendering, and RenderType.

EdgeStyle

EdgeStyle is an option of ComponentRendering that indicates the graphical primitives to be inserted before the graphical rendering of an annular surface that joins the two outer perimeters of a double-sided component.

It is a list of two rules: LineStyle and FillStyle. See also: DefaultStyle, SurfaceStyle, CrossStyle.

EdgeThickness

EdgeThickness is a database rule name that gives the edge thickness of a lens.

EfficiencyFunction

EfficiencyFunction is an option that indicates the diffraction efficiency of the grating component as a function of the DiffractionMismatch parameter.
EfficiencyFunction uses a real function that scales Intensity according to the value indicated by DiffractionMismatch. EfficiencyFunction is initially set to return 1.0 for all input values; however, the user can reset EfficiencyFunction for modeling the behavior of particular grating structures. EfficiencyFunction is an option of all grating components, as well as the Diffraction genetic building block. However, EfficiencyFunction is largely not used anymore since it is used only  with the option CoupledWaveTheory->False. See also: CoupledWaveTheory, DiffractionMismatch, MismatchCutOff, Diffraction, Grating.

ElasticModulus

ElasticModulus -> MegaPascals is a database rule name that indicates the modulus of elasticity for a material.

ElementDirectory

ElementDirectory is an option to LoadData that specifies a directory.

This directory contains data on manufactured optical components.

ElementFiles

ElementFiles is an option to LoadData that specifies a list of file names to be loaded.
These files contain information on manufactured optical components.

Ellipse

Ellipse is a value of BoundaryLabel and HoleBoundaryLabel.

EllipseAngle

EllipseAngle is an option of CustomFiber and FiberMirror that determines the angle of the elliptical long-axis in the fiber cross-section.
EllipseAngle -> 90 denotes a vertical-oriented axis. See also: EllipseRatio.

EllipseRatio

EllipseRatio is an option of CustomFiber and FiberMirror that determines the level of ellipticity in the fiber cross-section.
EllipseRatio -> 1 denotes a circular cross-section. See also: EllipseAngle.

EmbedGenerationLimit

EmbedGenerationLimit -> True is an option of TurboTrace that fixes the GenerationLimit information within RayTraceFunction at the time of the RayTraceFunction source code creation.
EmbedGenerationLimit -> False leaves the GenerationLimit information as one of the input parameters of RayTraceFunction. EmbedGenerationLimit -> Automatic uses the setting of True with OutputType -> TurboSystem and False with OutputType -> RayTraceFunction.
See also: $generationlimit, GenerationLimit, RayTraceFunction, EmbedRays, EmbedThresholdIntensity and ReportedParameters.

EmbedRays

EmbedRays -> True is an option of TurboTrace that fixes the geometric ray source information within RayTraceFunction at the time of the RayTraceFunction source code creation.
EmbedRays -> False leaves the geometric ray information as one of the input parameters of RayTraceFunction. EmbedRays -> Automatic uses the setting of True with OutputType -> RayTraceFunction and False with OutputType -> TurboSystem.
EmbedRays -> True is especially useful for repetitive ray-trace problems such as lens optimization and imaging problems where a component or light-source parameter is varied between each trace. EmbedRays -> True can greatly speed such problems where the system initialization consumes a significant fraction of the calculation time. In this instance, any symbolic parameter information passed with the light source is automatically included as an input parameter of RayTraceFunction.
See also: $inputrays, RayTraceFunction, EmbedThresholdIntensity, EmbedGenerationLimit, and ReportedParameters.

EmbedThresholdIntensity

EmbedThresholdIntensity -> True is an option of TurboTrace that fixes the ThresholdIntensity information within RayTraceFunction at the time of the RayTraceFunction source code creation.
EmbedThresholdIntensity -> False leaves the ThresholdIntensity information as one of the input parameters of RayTraceFunction. EmbedThresholdIntensity -> Automatic uses the setting of True with OutputType -> TurboSystem and False with OutputType -> RayTraceFunction.
See also: $thresholdintensity, ThresholdIntensity, RayTraceFunction, EmbedRays, EmbedGenerationLimit, and ReportedParameters.

Energy

Energy -> energy specifies the amount of integrated energy present either on a surface or in a system.

EnergyReference

EnergyReference -> energy is an option of FindIntensity that specifies the total integrated energy that is present at the first surface reported by the ray trace.

This value is used with the CalibrateEnergy -> True setting. All subsequent reported surfaces are then calibrated to the energy present at the first reported surface. See also: CalibrateEnergy.

EntranceCoordinates

EntranceCoordinates is a rule of Component that gives the center coordinates of the first surface encountered within each confined migration pathway.
The slot position of the each EntranceCoordinates element corresponds with a slot position within ConfinedPaths. EntranceCoordinates is used in constructing UnconfinedPath. See also: ConfinedPaths and UnconfinedPath.

EquivalentMagnification

EquivalentMagnification is a database rule name that indicates the equivalent microscope objective magnification value.
See also: Magnification.

EscapeComponent

EscapeComponent[component, options] is a generic building block that forces an increment to a new optical element after the ray encounters the specified surface given in the AffectedSurfaces option.
EscapeComponent preserves the initial increment direction of ray propagation through the component listing. An earlier nested FreezeIncrement generic building block may be used to enable multiple ray interactions at the surface site before escaping.
EscapeComponent is only valid for PropagateSystem calculations and is not recognized by TurboTrace. In this regard, EscapeComponent is now obsolete and Resonate should be used instead.

Ethanol

Ethanol specifies the use of an ethanol liquid medium at 20 degrees Celsius.
The refractive index model for Ethanol is most suitable for the wavelength range of .43 microns to .66 microns. Ethanol has a density of 0.800, relative to the density of water.

EvenFunction

EvenFunction is an option of AsphericLensSurface, AsphericLens, and AsphericMirror that indicates the use of even power polynomial terms as coefficients.
EvenFunction->True indicates that the polynomial terms start with the second order power and followed with higher order even-powered terms. For EvenFunction->False, the polynomial starts with the first order term and is followed by monotonically increasing power terms.

ExcelToRayica

ExcelToRayica[stringdata, options] is used to import and convert Excel spreadsheet data into one or more optical lens models for Rayica.
Normally, the number of columns is automatically determined by ExcelToRayica. As an alternative, ExcelToRayica[stringdata, numberofcolumns, options] can be used to specify the number of filled spreadsheet columns. ExcelToRayica requires that the stringdata for import be given in a single ascii string. Usually, this operation is accomplished by directly copying and pasting the data from Excel into Mathematica with double quotation marks placed manually on either side of the pasted data. The first row in the copied spreadsheet matrix must contain valid Mathematica option names that are used to identify the corresponding columns of information. Provided that the correct database information is present, ExcelToRayica then converts this information into one or more optical lens models that work with Rayica. The conversion process can be further modified by giving additional options to ExcelToRayica (that get passed internally to EditData). Note that ExcelToRayica requires stringdata to originate from a filled matrix in the spreadsheet. ExcelToRayica makes internal calls to ExcelToData and DataToRayica. ExcelToRayica is presently restricted to lens data that describe centered, refractive, spherical, multiple lens-surfaces with field stops. Excel is a Trademark of Microsoft Corporation, Redmond WA. See also: ExcelToData, DataToRayica, CodeVToRayica, KDPToRayica, and ZemaxToRayica.

ExitPosition

ExitPosition is an option of ABCDMatrix that denotes the starting position of the exiting ray from the component.
ExitPosition uses either a number or a surface function of two variables.

ExternalDeflectionFunction

ExternalDeflectionFunction[deflectionid] is a global function used by TurboTrace to calculate ray deflections.
ExternalDeflectionFunction is uniquely created for specific component Deflections (identified by DeflectionID -> deflectionid) and provides a compile interface to uncompilable aspects of DeflectionFunctions in TurboTrace.

ExternalSurfaceIntersectionFunction

ExternalSurfaceIntersectionFunction[surfaceid, RSx, RSy, RSz, RTx, RTy, RTz] is a global function used by TurboTrace to calculate surface-ray intersections.
ExternalSurfaceIntersectionFunction is uniquely created for specific component surfaces (identified by SurfaceID -> surfaceid) and provides a compile interface to uncompilable SurfaceIntersectionFunctions in TurboTrace. In particular, ExternalSurfaceIntersectionFunction is used with Solve, NSolve, FindRoot, and FindMinimum, since these cannot be directly compiled by Mathematica. See also: SurfaceIntersectionFunction.

ExtrapolateSurfaceFunction

ExtrapolateSurfaceFunction is an option of ComponentFoundation that specifies whether the surface function is continued automatically outside the aperture of the surface.
Some numeric functions, like InterpolatingFunction, are restricted to a parameter range. During the process of finding ray-surface intersections, the surface parameters can bounce off this range although the intersection is within the surface boundary. For ExtrapolateSurfaceFunction -> True, a continuation is generated and the calculation can succeed. ExtrapolateSurfaceFunction -> Automatic together with SurfaceNormalCalculations -> Numeric acts as the setting True.
In order to generate an extrapolation, a parametric point outside the aperture of the surface is projected onto the aperture. The value of the surface function at this aperture point is then added to the derivative times the distance of the parametric and aperture points.

FarField

FarField -> True/False is an option that controls the ray-trace modelling of GaussianBeam sources.
For FarField -> True, the rays are constructed to accurately simulate the spot size and divergence in the far-field of the beam waist. Any specified spot size near the beam waist, however, will not be accurately modelled with this setting. FarField -> False accurately represents the starting spot size and divergence of Gaussian sources, regardless of their distance from the beam waist. For Gaussian beams that are generated close to their beam waist position, however, this setting will not accurately model the far-field beam behavior. Nevertheless, FarField -> False does accurately model the far-field behavior of sources that do not originate close to their beam waist positions. In this situation, the FarField -> True and FarField -> False settings converge to produce the same result. Note that the FarField option only affects the numerical ray-trace properties of GaussianBeam functions but has no effect on symbolic-related calculations.

Fiber

Fiber[corediameter, claddingdiameter, length, label, options] and Fiber[corediameter, length, label, options] designates a straight-lined, stepped-index optical fiber.
The refractive core and cladding materials are given by the option, ComponentMedium -> {corematerial, claddingmaterial}. Fiber is created with an end located at x = 0 and with its length oriented along the x axis. When no claddingdiameter parameter is given, then the fiber is assumed to be uncladded with its outer surfaces exposed to the IntrinsicMedium of the environment. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: CustomFiber and CustomFiberMirror.

FiberFunctionQ

FiberFunctionQ[x] and FiberFunctionQ[{x}] test whether x indicates one or more Function objects that evalue to numerical result or a numerical value. The result is True or False.

Field

Field is a pattern of RayParameters.

FieldOfRays

FieldOfRays[seed, horizontal, options] initializes a set of overlapping rays that point down the positive x-axis (for the default BirthPoint setting) and are distributed over the specified range of horizontal polarizations.

The horizontal parameter specifies the scaled horizontal polarization between 0 and 1. It can be a single value or a range of two values. The vertical polarization is set to Sqrt[1-horizontal^2]. The number of horizontal polarizations is given by the first number of the option NumberOfRays, the number of polarization angles by the second.

The seed parameter is optional and is used to generate more elaborate ray patterns. When it is present, it specifies additional light sources to be nested with the basic FieldOfRays result. When PropagateSystem is used for the ray trace, FieldOfRays produces a set of Ray objects. However, with TurboTrace calculations, a TurboRays object is generated from FieldOfRays instead. The distribution of rays is controlled by the GridSpacing option and the starting origin is defined by the BirthPoint option.

See also: NumberOfRays, PhaseAngle, MonteCarlo, GridSpacing, SourceFraction, SourceOffset, SingleRay, CircleOfRays, ConeOfRays, WedgeOfRays, LineOfRays, GridOfRays, PointOfRays, CustomRays, GaussianBeam, and RainbowOfRays.

FieldOfView

FieldOfView is a database rule name that specifies the half-angle field of view for a lens in degrees.

FieldStopLocation

FieldStopLocation is a database rule name that provides the field stop surface number of a compound lens.

Fill

Fill is a value of RenderType within Component that designates that the surface graphics should be filled with shaded areas.

FillOffset

FillOffset -> percentage is an option of ComponentRendering and a rule embedded within Component that specifies the separation of the rendered surface net from the surface outline.

The percentage may also be a list, each entry corresponding to one surface. If the lines of the outline are partly covered by the surface net, this option can be used to artificially reduce the fill factor of the surface net.

FillStyle

FillStyle is an option of optical components that carries a list of graphics styles for the rendering of filled surfaces. See also: LineStyle.

FilterAllCreatedRays

FilterAllCreatedRays -> function is a rule sometimes embedded within Deflections in Component that designates a function being used to filter the input to the ray-tracing function calculation.
The function takes as arguments the rays corresponding to the AllCreatedRays and OriginalRay rules and must return a single ray.
As word value of AddTo or ReplaceFor, FilterAllCreatedRays acts on the filtered rays returned by TakeFrom. See also: TakeFrom.

FilterTrace

FilterTrace -> True/False is an option of TurboTrace and PropagateSystem that determines which rays are retained from a trace.
This option is used to discard certain types of surface-ray interactions during the ray-trace process. This is used in TurboTrace during the scout trace process (for ScoutTrace -> True or SequentialTrace -> True). In the case where multiple rays are generated at a optical surface, such as with diffraction gratings and Fresnel reflections, FilterTrace -> True retains only the strongest ray generated at each surface encounter. FilterTrace -> False passes all of the generated rays from the trace.
In addition to True/False settings, FilterTrace -> {orderfunction, selectfunction} can be used to determine the ray selection criteria. The rays are ordered by using orderfunction inside OrderedQ. Then, the ray list is scanned with selectfunction to select rays. Both functions take a deflected ray as argument, the selectfunction takes additionally the slot number of the ray in the ordered ray sequence and the total number of rays created by the deflection. Examples of {orderfunction, selectfunction} include {(Intensity/.#1)&, (#2===#3)&} and {1&, (#2===1)&}.

FinalMerit

FinalMerit returns the final performance value found by a minimization calculation in OptimizeSystem.
See also: OptimizeSystem.

FindFocalSurface

FindFocalSurface[opticalsystem] determines the image surface of best focus in three-dimensional space for an array of focus points that result from the DistortionGrid light source function.

Internally, FindFocalSurface calls FindFocusFast to determine the foci positions. If the SingleRay -> True option setting is used, then FindFocalSurface returns a single ray for each foci position. Otherwise, FindFocalSurface returns a cluster of rays for each foci position according to the input source function.

See also DistortionGrid.

FindFocus

FindFocus[objectset, options] determines the minimum spot size for a locus of rays at the last reported surface in the system and plots the results.

The focus search is started at the last reported surface.  FindFocus returns a list of rules containing FocalPoint, SpotSize, BackFocalLength, FocalPlaneTilt. Although FindFocus can use previously ray-traced results in objectset, objectset need not be ray-traced in advance. To catch all rays of nonsequential optical systems, use a TurboSystem, TracingEngine -> TurboTrace (the default) for untraced systems or RayHistory -> TurboSystem when generating the system.
FindFocus minimizes the maximum distance from the first ray in objectset. See also: FindSpotSize, ConstructMeritFunction, and RaySelect.

FindFocusFast

FindFocusFast[objectset, options] determines the minimum spot size for a locus of rays at the last reported surface in the system without plotting the results.


FindFocusFast returns a list of rules including FocalPoint, SpotSize, BackFocalLength, FocalPlaneTilt. The focus search is started at the last reported surface. If necessary, the objectset is traced and/or converted with TurboTrace.

To catch all rays of nonsequential optical systems, use a TurboSystem, TracingEngine -> TurboTrace (the default) for untraced systems or RayHistory -> TurboSystem when generating the system.


FindMinimum -> delta suppresses optimization and assumes the focus to have the perpendicular distance delta from the last reported surface. IndependentSources -> True allows to find one focus for each source. TurboRays -> True also returns a TurboRays object with ray ends corresponding to the ray segments from the before last surface to the focus. With SingleRay -> True, FindFocusFast returns only one ray for each focus.

See also: TracingEngine.

FindGlassNumbers

FindGlassNumbers[opticalmediumlist, options] calculates five important parameters traditionally used to characterize optical glasses: the refractive value, the Abbe V-number, the mean dispersion value, the glasscodenumber, and the partial dispersion ratio.
The opticalmediumlist contains labels used to identify optical materials. If an optical material definition exists in the Rayica database but has not yet been created in Rayica, FindGlassNumbers uses DataToRayica to build a refractive index model corresponding to the opticalmedium label. FindGlassNumbers uses the SpectralRegion option to specify the wavelength lines for its calculations. See also: RefractiveIndex, AbbeVNumber, GlassCodeNumber, PartialDispersionRatio, MeanDispersion, SpectralRegion, SpectralRegion, GlassCodeFunction, DataToRayica, and GlassMap.

FindIntensity

FindIntensity[system, options] calculates the intensity function for each optical surface that gets reported from the ray trace of the system.

For its input, FindIntensity works best with either an untraced, raw, optical system or a previously calculated result of FindIntensity. However, when necessary, FindIntensity can also work with externally generated trace results. FindIntensity works equally well for surfaces that either are close to a focal plane or far from any focus. If a light sheet light source is used (ie. WedgeOfRays or LineOfRays), then a one-dimensional intensity function is automatically calculated. If a volume-filling light source is used (ie. PointOfRays, GaussianBeam, or GridOfRays), then the intensity calculations are automatically carried out for each reported surface in two-dimensions.


FindIntensity uses the KernelScale and SmoothKernelSize options to specify a Gaussian smoothing kernel that gets convolved with the intensity data. This smoothing kernel can be set to the diffraction-limited spot-size of the systen in order to incorporate the diffraction-limited behavior with the geometric ray-trace data.

See also: KernelScale, SmoothKernelSize, and SmoothKernelRange.

FindNumericNormalToDerivativePartials

FindNumericNormalToDerivativePartials[surfacefunction, aperture, {SCx,SCy}] finds the surface normal vector of a numeric surfacefunction for the specific parametric coordinates given by {SCx,SCy}.
Note that FindNumericNormalToDerivativePartials is not designed for high accuracy and is only used by FindExtrapolatedFunction to get an approximate result.

FindSpotSize

FindSpotSize[objectset, selectionproperties, options] takes an object set containing Ray objects, and returns the diameter and position of a circle enclosing the locus of ray/surface intersection points that shares the common set of traits specified in selectionproperties.
FindSpotSize works with either PropagateSystem or TurboTrace results. If the objectset has not been ray-traced, then FindSpotSize will first run PropagateSystem. If no selectionproperties are given, then the intersection points at the last surface are used. However, for TurboTrace results, FindSpotSize reveals only the spot size on the last surface and ignores any specified selectionproperties. See also: FindFocus, ReadRays, and RaySelect.

FinishPoint

FinishPoint is a rule nested within RenderedPolygons of Component that gives the two-dimensional ending coordinate on a surface indicated by SurfaceNumber.
FinishPoint is used for creating the sides of a polygon that span several surfaces.

FirstSlot

FirstSlot is a value of AffectedSurfaces and indicates that the first slot position within each confined path in ConfinedPaths inherits the new ray-tracing function trait.
In general, ray-tracing function traits are added to a surface by appending the ray-tracing function position (within Deflections) to the affected DeflectionNumber value within ConfinedPaths.
See also: AllDeflections, AllSurfaces, NotFirstSlot, LastSlot, NotLastSlot, AffectedSurfaces, and IndependentSurfaces.

FlatSubstrate

FlatSubstrate -> True is an option that denotes that a curved mirror has a flat substrate back.
FlatSubstrate -> False creates a curved mirror substrate backing that is adjusted to maintain an equal thickness throughout the mirror. See also: InputEdgeThickness and FrontSurface.

FNumber

FNumber is a database rule name that specifies the f-number (also called f/# or speed) of a lens.
The f/# is defined by: (focal length)/(clear aperture diameter). See also: NA.

FocalLength

FocalLength is a database rule name that specifies the effective focal length of a lens.
See also: FrontFocalLength, BackFocalLength, and CatalogFocalLength.

FocalPlaneTilt

FocalPlaneTilt labels the unit vector that denotes the direction of the ray bundle's optical axis.
See also: FindFocus and FindFocusFast.

FocalPoint

FocalPoint indicates the point of focus in three-dimensions.
See also: FindFocus and FindFocusFast.

FocusDiameter

FocusDiameter is a setting for FocusType that specifies that the focus diameter is to be minimized. It is slower and more accurate than FocusRadius.

FocusRadius

FocusRadius is a setting for FocusType that specifies that the focus radius is to be minimized. It is faster and less accurate than FocusDiameter.

FocusRays

FocusRays[component, focalpoint, efficiency, options] is a generic building block that focuses the rays from the component surface to a chosen focal point in three-dimensional space.
The efficiency parameter alters the Intensity value of the propagated rays and can be either a number or a held expression that evaluates to a value between zero and one.

FocusType

FocusType -> FocusDiameter is an option that specifies what is considered to be the focus. Allowed values are: RMSFocus, FocusRadius, FocusDiameter.

FollowContour

FollowContour -> True/False is an option of the ScatterRays and Diffraction that indicates whether the three-dimensional shape of the surface is taken into account in the ray scattering calculation.
In ScatterRays, FollowContour indicates whether the scattering profile of non-point seed-sources take into account the three-dimensional shape of the surface. FollowContour -> True adjusts the starting points of displaced rays to fit the local surface contour. FollowContour -> False does not use the surface contour information to construct displaced ray scattering.
In Diffraction, FollowContour indicates whether the grating vector is oriented with respect to the localized surface normal direction and follows the contour of the grating surface. Note that FollowContour with ScatterRays is currently only implemented for TurboTrace and not with PropagateSystem.

ForwardDirection

ForwardDirection is an unauthorized rule of Ray that is an internal flag variable. It is used by TurboTrace and Refraction to indicate the propagation direction.

FreezeIncrement

FreezeIncrement[component, options] is a generic building block that causes the ray to remain targeted to the same surface for successive propagation generations.
This effect enables successive ray interactions with the same surface to occur. The ray is allowed to continue propagating to other surfaces once the current surface is no longer in its trajectory path. In PropagateSystem, FreezeIncrement is also an unauthorized option of Ray. The ray parameter FreezeIncrement -> True causes rays not to increment to other surfaces until no intersection is found with the current surface.
FreezeIncrement is only valid for PropagateSystem calculations and is not recognized by TurboTrace. In this regard, FreezeIncrement is now obsolete and Resonate should be used instead.

Fresnel

Fresnel[component, groovespacing, options] is a generic building block used for transforming a regular optical element into a flattened Fresnel equivalent.
The groovespacing argument specifies the width of the Fresnel grooves and the groove direction is specified by the FresnelSymmetry option. If SagFit->True is used then the groovespacing parameter denotes the depth of each groove and the groove width is varied to match the specified sag. Fresnel uses the AffectedSurfaces option to specify the component surfaces affected by Fresnel. If AffectedSurfaces does not specify a number or list of numbers, Fresnel will transform all surfaces present. See also: SmoothFresnel, SmoothKernelSize, SmoothKernelRange, FresnelSymmetry, and SagFit.

FresnelReflections

FresnelReflections -> False is an option of Refraction that is used to suppress ray-surface reflections at a refractive interface.

Otherwise, FresnelReflections -> True generates a reflected ray at the refractive interface that has an Intensity value determined by the ray Polarization state.

FresnelRefraction

FresnelRefraction is a value of Theory, for example returned by ModelRefractionTheory, to characterize a medium with normal Fresnel refraction.

FresnelRhomb

FresnelRhomb[entranceface, label, options] is a special construction of RhomboidPrism that uses total-internal Fresnel reflections to perform an achromatic retardation of either 1/4 wave or 1/2 wave on the incident light for polarization applications.
The FullForm option is used to switch between half-wave and quarter-wave prism models. The default setting of FullForm -> False gives a 1/4 wave retardation by modeling a single RhomboidPrism-type object to create two internal reflections. FullForm -> True gives a 1/2 wave retardation by modeling a joined pair of RhomboidPrism-type objects to create four internal reflections. FresnelRhomb is aligned with its entrance face at x = 0 and located in the x-y plane to maintain a parallel exit beam with the x-axis. The entranceface specifies the smaller thickness dimension of the entrance face (the longer slant dimension is then internally calculated). FresnelRhomb uses the DefaultAngleSetting option to set the entrance angle. DefaultAngleSetting -> Automatic calculates the angle based on the given DesignWaveLength and ComponentMedium options.  The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: RhomboidPrism, Prism, PentaPrism, WedgePrism, and PellinBrocaPrism.

FresnelSymmetry

FresnelSymmetry is an option of Fresnel that indicates the groove symmetry of the Fresnel surface.
FresnelSymmetry can be set to Automatic, RadialSymmetry, HorizontalSymmetry, VerticalSymmetry, and OtherSymmetry.

Front

Front is a value of CurvatureDirection.

FrontFocalLength

FrontFocalLength is a database rule name for a lens that specifies the distance between the front focal point and the front lens surface.
See also: BackFocalLength, FocalLength, and CatalogFocalLength.

FrontSurface

FrontSurface -> True is an option that denotes that the first side of a mirror is reflective. This sometimes allows a simpler mirror model to be implemented.
FrontSurface -> False replaces a refractive surface at the front and a reflective surface at the back of the mirror. This incorporates a more complex refractive/reflective propagation model into the component's description. FrontSurface is an option of all double-sided, built-in mirrors, except for conjugate mirrors. See also: FlatSubstrate, InputEdgeThickness, and FrontSurface.

FrontView

FrontView is a value of PlotType that gives a two-dimensional orthoscopic rendering showing a projection onto the y-z plane of the optical system.
See also: RealTime3D, Surface, TopView, SideView, ShadowProject, Off, and Full3D.

Full3D

Full3D is a value of PlotType that gives the full three-dimensional rendering of the optical system.
See also: RealTime3D, Surface, TopView, SideView, FrontView, ShadowProject, and Off.

FullPlotRange

FullPlotRange -> values is a rule sometimes embedded inside the Options rule of an optical system.
The values are number pairs specifying the minimum and maximum coordinates in each direction of the global coordinate system. The component graphics as well as the rays are taken into account. The option does not depend on the option PlotRange.

FunctionCenter

FunctionCenter is an option of ComponentFoundation that gives the values of the component surface functions at the function origin.
Well-behaved surface functions have finite values at their origin and the default setting FunctionCenter -> Automatic is used. However, some custom-defined functions, whose limits approach infinity at their function origin, need to be manually set to some finite value, FunctionCenter -> {x1, x2, ...} where typically xi = 0. For a single-surfaced component, use FunctionCenter -> x where typically x = 0. See also: SurfaceCenter and EntranceCoordinates.

FunnelLens

FunnelLens[domeradius, entrancediameter, exitdiameter, length, label, options] defines a lens having a spherical entrance surface with the specified radius, parabolic tapered side walls defined by the entrance and exit aperture along with the length, and a planar exit surface.
FunnelLens is created with the center of the spherical lens centered at the origin and the center of the planar exit surface positioned down the positive x axis. FunnelLens is used in light gathering applications. (This is an experimental component contributed by William Cottingame, UCLA.) The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also DTIRCLens, DTIRCLensSurface, FunnelLens, FunnelLensSurface, SnowConeLens, SquareConeMirror, and WinstonConeMirror.

FunnelLensSurface

FunnelLensSurface[entrancediameter, exitdiameter, length, label, options] designates a parabolic tapered surface defined by entrance and exit aperture along with an overall length.
FunnelLensSurface is used internally by FunnelLens, but is not normally ever used directly and has only been made public for experimental purposes. FunnelLensSurface is created with its entrance aperture centered about the origin and its exit aperture positioned down the positive x axis. FunnelLensSurface is used in light gathering applications. (This is an experimental component contributed by William Cottingame, UCLA.) The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.
See also DTIRCLens, DTIRCLensSurface, FunnelLens, SnowConeLens, SquareConeMirror, and WinstonConeMirror.

FusedSilica

FusedSilica indicates the use of a fused silica medium.
The refractive index model for FusedSilica is most suitable for the wavelength range of .18 microns to 2.0 microns.

GaussianBeam

GaussianBeam[beamspotsize, fulldivergence, options] and GaussianBeam[complexbeamparameter, options] is a light source that takes either the output beam spotsize radius (specified at 1/e of the axial value of the electric field amplitude peak in the starting plane) and far-field beam fulldivergence (specified as the full angle in radians at 1/e^2) or the complex beam parameter as input and creates an extended point source ray model of a Gaussian laser beam.
In addition, GaussianBeam uses the FullForm option to determine whether a uniform grid of rays are created or two distinct fans of rays are instead constructed. For FullForm->False, GaussianBeam creates either a single two-dimensional fan of rays in the x-y plane or two cross-hatched fans of rays that lie in the x-y and x-z planes, depending on whether the spotsize and fulldivergence or complexbeamparameter contains single numbers or sets of two numbers. For FullForm->True, GaussianBeam attempts to construct a uniform three-dimensional grid of rays to model the spot size and beam divergence behavior. In some instances, however, when the two transverse beam waists occur at different locations along the optical axis, then GaussianBeam cannot presently construct a full three-dimensional model. In this event, it reverts to the FullForm->False behavior.
In order to generate an elliptical Gaussian beam, one needs to specify FullForm->True, provide a list of two values for the horizontal and vertical components of either beamspotsize or fulldivergence, and specify only the horizontal component of the remaining beamspotsize or fulldivergence parameter. In this instance, Rayica will automatically calculate the value of the remaining unspecified vertical component.
GaussianBeam uses the UnitScaleFactor option to determine the spatial units of the beamspotsize input parameter. In its default setting, UnitScaleFactor -> 1, the units are taken in millimeters. Note, however, that the WaveLength option is not affected by UnitScaleFactor and always takes units of microns.
Each input parameter may also take a symbolic setting in addition to a numeric value. In such an event, a two-element list of terms, {symbolic,numeric}, is given for each symbolic parameter setting. In addition to geometric ray tracing, GaussianBeam is also used in symbolic Gaussian beam propagation calculations.
Note that the RunningCommentary -> True/False/All option can be included with GaussianBeam to observe the internal processes involved.
See also: UnitScaleFactor, FarField, SpotSizeFactor, BeamWaist, SymbolicBeamWaist, BeamSpotSize, SymbolicBeamSpotSize, BeamCurvature, SymbolicBeamCurvature, BeamDivergence, SymbolicBeamDivergence, BeamScaleLength, SymbolicBeamScaleLength, ComplexBeamParameter, SymbolicComplexBeamParameter, SingleRay, CircleOfRays, ConeOfRays, WedgeOfRays, LineOfRays, GridOfRays, PointOfRays, CustomRays, FieldOfRays, and RainbowOfRays.

GenerationLimit

GenerationLimit is an option of PropagateSystem that determines the maximum number of ray/surface interactions permitted before the ray propagation is discontinued.
See also: GenerationNumber and ThresholdIntensity.

GenerationNumber

GenerationNumber is a rule of Ray that specifies the maximum-valued IntersectionNumber found within the global system of Ray objects at the creation of the specified Ray object.
SurfaceNumber, ComponentNumber, ConfinedPosition, UnconfinedPosition, IntersectionNumber, GenerationNumber, and ConfinedNumber are all pointer parameters stored in Ray.

Geometry

Geometry is a pattern of RayParameters.

GetCoatingRules

GetCoatingRules[coatingmedium, {medium1, medium2}, coatingspecification, deflectiontype, compiled, check, options] returns a list of two rules: CompiledCoating -> coating, and a new deflectiontype.
The values of coating[] is a PrecisionFunction depending on: WaveLength, Intensity, Polarization, Temperature, Tension, SurfaceCoordinates, WaveTilt, SurfaceNormalMatrix. The order is fixed and automatically created from ModelRefractiveIndex. Inside a DeflectionFunction, the values are calculated by calling the function with all parameters. MaterialRotationMatrix as well SurfaceCoordinates and WaveTilt are used in connection with birefringent or structured media.
For compiled equals False, the index functions are not compiled, and check being False suppresses the range checks. The options as well as coatingmedium, {medium1, medium2} and coatingspecification are passed directly to ModelCoating.

GetMaterialRules

GetMaterialRules[medium, indices, materialrotation, temperature, tension, surfacenormalfunction, compiled, check, theorymodifications] returns a list of rules, designating the medium used. Inside a DeflectionFunction, the indices are calculated by calling the function with all parameters.
The second parameter gives a list of names to designate the indices of interest and may contain RefractiveIndex, AttenuationIndex, RelativePermeability, RelativePermittivity, and Conductivity. For compiled equals False, the index functions are not compiled, and check being False suppresses the range checks. The theorymodifications can contain up to two elements, that describe the calculation method to be forced and are given as values or the rules FresnelReflections -> value and DirectionCalculations -> value. The rest of this parameter is a list of rules and passed directly to ModelRefractiveIndex and ModelRefractionTheory.

GetRealRefractiveIndex

GetRealRefractiveIndex[medium, listofrules] returns the refractive index of medium using listofrules. If the material model does not return a number, the index is set to 1, an imaginary part is set to zero. The function is designed for fast calculations that cope only with a real refractive index.

GirdleThickness

GirdleThickness is an option of the Solitaire prism that specifies the thickness of the girdle (solitaire waist) as a percentage of the overall Solitaire diameter.
Specialized options of the Solitaire prism include: TableDiameter, GirdleThickness, CrownAngle, PavilionAngle, StarDiameter, BackFacetDiameter, CrownHeight, PavilionDepth, CuletAngle, and CuletDiameter.

GlassCodeFunction

GlassCodeFunction[input, options] takes variety of input formats and creates linear or second-order, wavelength-dependent, refractive index functions used in ray-trace calculations.
GlassCodeFunction is used together with ModelRefractiveIndex to designate a new material model. There are four basic input formats recognized by GlassCodeFunction. If the input is a number less than 100, then the input is assumed to be a fixed refractive index and GlassCodeFunction creates a constant refractive index function. If the input is a number greater than 100, then GlassCodeFunction recognizes this to be a glass code number and creates a linear glass dispersion model for it. Alternatively, when the input is a list of either two or three numbers: GlassCodeFunction[{nd, Vd}] (as well as GlassCodeFunction[{Vd, nd}]) generates a linear glass dispersion model function and GlassCodeFunction[{nd, Vd, Pdc}] generates a second-order glass dispersion model, where Vd = (nd-1)/(nf-nc) is the Abbe V-number, and Pdc = (nd-nc)/(nf-nc) is the relative partial dispersion for the refractive material. Here, nf, nd, and nc are the refractive index values for three different wavelengths specified by the SpectralRegion option of GlassCodeFunction. In the case of GlassCodeFunction[{nd, Vd}] and GlassCodeFunction[{nd, Vd, Pdc}], the order of Vd and nd is automatically detected. The input parameters of GlassCodeFunction have long been associated with optical glasses. However, the GlassCodeFunction can be used to model any optical material.
GlassCodeFunction is automatically called by ModelRefractiveIndex to generate the index function if a single number or list of numbers is specified by the ComponentMedium option of a component function. In such cases, the default SpectralRegion option setting is used. See also: ModelRefractiveIndex, SellmeierFunction, IndexFunction, IndexInterpolationFunction, HerzbergerFunction, SpectralRegion, AbbeVNumber, PartialDispersionRatio, FindGlassNumbers, IndexChart, PartialDispersionChart, and DataToRayica.

GlassCodeNumber

GlassCodeNumber -> (nd-1):Vd is a rule name that specifies the standard six digit glass identification number of an optical glass.
The first three digits indicate the refractive index minus one of the material. The last three digits provide the Abbe V-number of the material times a factor of ten. For example, a glass with an Nd of 1.517 and a V-number of 64.5 would be identified as 517645. Note: in rare cases where the refractive index reach a value of 2, the GlassCodeNumber will contain seven digits. See also: FindGlassNumbers, SpectralRegion, GlassCodeFunction, GlassMap, PartialDispersionRatio, MeanDispersion, and AbbeVNumber.

GlassMap

GlassMap[selectionproperties, options] is used to illustrate dispersive properties of optical materials and to select new material models from the Rayica database.
GlassMap uses ReadData internally to select the optical data for display. If no selectionproperties are given, then all loaded optical materials are displayed. GlassMap uses the option PlotType to specify the plotted parameters. In all cases, the optical materials are represented by distinct points on a graph. As an example of PlotType, with either PlotType -> RefractiveIndex or PlotType -> Automatic, GlassMap gives a plot of the refractive index, nd, versus the Abbe V-number for the selected database-stored optical materials. The Abbe V-number, Vd = (nd-1) / (nf-nc), is a measure of the chromatic aberration of the specified material in a lens component. The smaller the Abbe number, the greater will be the chromatic aberration contribution of the material to a lens. Here, nf, nd, and nc are the refractive index values for three different wavelengths specified in the SpectralRegion option of GlassMap. As an alternative, PlotType -> {RefractiveIndex, AbbeVNumber} can also be used for the same effect.
Depending on the PlotType values given, GlassMap gives a number of different point-like representations for the refractive index and dispersive properties of optical materials. PlotType can hold either one or a list of two values. If a single value is given, then the chosen value is plotted on the vertical axis, and the horizontal axis shows the AbbeVNumber. Otherwise, PlotType -> {value1, value2} can be used to directly indicate the horizontal and vertical display parameters. PlotType values can include: Automatic, RefractiveIndex, PartialDispersionRatio, MeanDispersion, AbbeVNumber, and Function[{nf, nd, nc}, F[nf, nd, nc]] where F[nf, nd, nc] is a user-defined expression. When PlotType holds a list of two values, the value list order is usually not important. In particular, the MeanDispersion and AbbeVNumber parameters always take the horizontal axis regardless of their specified positions in PlotType, unless both get specified simultaneously. In such a case, the MeanDispersion parameter gets plotted on the vertical axis and the AbbeVNumber parameter remains plotted on the horizontal axis. However, in the case of two user-specified Function parameters, the first Function parameter takes the horizontal axis while the second Function parameter takes the vertical axis.
GlassMap has two different modes of operation: rendering of data and creation of new optical material models. GlassMap is initially used to create a plot of optical material points. In its plotting mode, GlassMap uses ShowLabels -> True to indicate display of the Schott glass boundaries and ShowText -> True to indicate display of the material names with their corresponding points. Finally, GlassMap can be used to create new refractive index models in Rayica for specific selected materials. Once a plot has been generated in any PlotType format by one GlassMap function, the mouse-sampled coordinate points can then be copied and pasted as selectionproperties into a second GlassMap function having the same PlotType setting to generate new optical material models. When GlassMap receives one or more sets of coordinate points in selectionproperties, GlassMap identifies the corresponding optical material types and calls DataToRayica with the OpticalMedium names of each identified material. DataToRayica then creates a new refractive index model for each material and GlassMap reports a message about each newly defined material.
See also: SpectralRegion, DataToRayica, FindGlassNumbers, RefractiveIndex, AbbeVNumber, PartialDispersionRatio, MeanDispersion, SearchData, and ReadData.

Glycerine

Glycerine indicates the use of a glycerine liquid medium at 20 degrees Celsius.
The refractive index model for Glycerine is most suitable for the wavelength range of .43 microns to .66 microns. Glycerine has a density of 1.260, relative to the density of water.

GradedRefraction

GradedRefraction[component, options] is a generic building block that traces rays through a curved tragectory within a graded-index material that lies between two surfaces.

Note that GradedRefraction requires two surfaces to be present. Also note that GradeRefraction still requires the separate application of the Refraction function to model external refractive surfaces in the system.

GraphicalOutput

GraphicalOutput[componentgraphics] is an object carrying the listing of graphics primitives for the rendering of components.
In general, the list order of componentgraphics corresponds with the list order of the specified component elements.

GraphicDesign

GraphicDesign is an option of all rendered components that specifies the style of rendering.
GraphicDesign can be set to Automatic, Sketch, Wire, Solid, or Off.
It can also be used ss an Option of ShowSystem. In the form GraphicDesign -> name, it changes the rendering of all components, GraphicDesign -> {name, n} or GraphicDesign -> {{name,n}..} changes the rendering of the n-th component. Components with no rendering information, even not Off, are not changed.

Grating

Grating[gratingfunction, aperture, label, options], Grating[gratingfunction, aperture, thickness, label, options], and Grating[surfacefunction, gratingfunction, aperture, thickness, label, options] denote a diffractive component that splits incoming rays into multiple diffracted orders according to the gratingfunction parameter and the DiffractedOrders option.

The thickness parameter refers to the thickness dimension of the grating substrate. If no thickness value is given, the component is assumed to have no substrate. According to the GratingThickness option, the physical grating material may also have a physical thickness within a separate refractive emulsion layer. Note that the total thickness of the Grating is given by the substrate thickness in addition to the GratingThickness parameter. When DoubleSubstrate -> True is specified, the grating is sandwiched between two substrates of equal thickness. (Note that DoubleSubstrate only applies to flat-surfaced gratings).

The gratingfunction parameter specifies a grating vector either as a one-dimensional value, Gy, a two-dimensional list of values, {Gy, Gz}, a three-dimensional list of values, {Gx, Gy, Gz}, or a three-dimensional function, Function[{s,t}, {Gx[s,t], Gy[s,t], Gz[s,t]}], in which {Gx, Gy, Gz} specify the indicated grating directions with the grating surface initially oriented parallel to the y-z plane. These vector quantities have units of spatial frequency and are given in line pairs per millimeter. A single number used in the grating parameter indicates a uniformly distributed grating vector pointing in the direction of the y axis. A list of two numbers designates a uniformly distributed grating vector whose direction lies within the surface plane.

If you compare results with calculations by hand, please keep track of the correspondence of the options VacuumFrequency and GratingMedium. Note that VacuumFrequency->False assumes the grating function has already incorporated the refractive index of the grating material. However, if VacuumFrequency->False is specified, then Rayica will include an additional refractive index factor to the grating magnitude.

The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: GratingTheory, EfficiencyFunction, GratingMirror, SphericalGratingMirror, and Diffraction.

GratingFunction

GratingFunction -> function is a rule that designates a function describing the grating vector.
See also: Diffraction.

GratingFunctionQ

GratingFunctionQ[x] and GratingFunctionQ[{x}] test whether x indicates one or more Function objects that evalue to numerical result or a numerical value. The result is True or False.

GratingMedium

GratingMedium is an option that indicates the material of the grating. It is specified as the option ComponentMedium for refractive components. For surface gratings it affects only the grating vector, if VacuumFrequency -> False is specified.
See also: Diffraction, Grating.

GratingMirror

GratingMirror[gratingfunction, aperture, label, options] and GratingMirror[gratingfunction, aperture, thickness, label, options] indicate a planar, diffractive, reflective component that splits incoming rays into multiple diffracted, reflected orders according to the gratingfunction parameter and the DiffractedOrders option.
The thickness refers to the refractive substrate of the grating. If no thickness value is given, the component is a single-sided grating. According to the GratingThickness option, a refractive part may be present in the grating. The gratingfunction parameter specifies a grating vector either as a one-dimensional value, Gy, a two-dimensional list of values, {Gy, Gz}, a three-dimensional list of values, {Gx, Gy, Gz}, or a three-dimensional function, Function[{s,t}, {Gx[s,t], Gy[s,t], Gz[s,t]}], in which {Gx, Gy, Gz} specify the indicated grating directions with the grating surface initially oriented parallel to the y-z plane. These vector quantities have units of spatial frequency and are given in line pairs per millimeter. A single number used in the grating parameter designates a uniformly distributed grating vector pointing in the direction of the y axis. A list of two numbers specifies a uniformly distributed grating vector whose direction lies within the surface plane.

If you compare results with calculations by hand, please keep track of the correspondence of the options VacuumFrequency and GratingMedium. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: GratingTheory, Grating, Diffraction, and Reflection.

GratingModulation

GratingModulation is an option that indicates the modulation of the grating. A single value, or the first value in a list, refers to the given grating function, from the second value on, harmonics of the grating function are specified. For phase gratings, each entry in the list is a list of two values: the medium used for modelling and two functions describing the modulation of the refractive and attenuation index. The attenuation is yet not used in Rayica. The Function is compiled internally and may take additional arguments in the same order as used by the indices returned by GetMaterialRules, for example WaveLength, Intensity, Polarization, Temperature, Tension, MaterialRotationMatrix, SurfaceCoordinates, WaveTilt, SurfaceNormalMatrix. An example: {BK7, Function[0.02*#1*(1-(#5-20)/1000)], Function[#1], Function[#1]} for a modulation with 2% of the refractive index of BK7, slightly depending on temperature.
See also: Diffraction, Grating.

GratingRotationMatrix

GratingRotationMatrix is an option that indicates the orientation of the given gratingfunctions in the same way as RotationMatrix for a Component. The orientation is relative to the surface, on which the grating is.
See also: Diffraction, Grating.

GratingStrength

GratingStrength is an unauthorized rule of ray that denotes the local strength of a grating. It is defined as Pi*n1*d/WaveLength/Sqrt[cR*cS], with n1 as first Fourier coefficient of the square of the refractive index modulation, d grating thickness, cR and cS direction cosine of the incident and the diffracted wave.
See also: Diffraction, Grating.

GratingSurface

GratingSurface is obsolete. Please use Grating with no thickness instead.

GratingThickness

GratingThickness is an option that indicates the thickness of the grating in microns.
It may be a function of the values of the options SurfaceCoordinates (as sequence), Temperature and Tension. The function is compiled internally and used for volume gratings (CoupledWaveTheory -> True).
See also: Diffraction, Grating, and CoupledWaveTheory.

GridOfRays

GridOfRays[seed, size, options] initializes a set of rays distributed within a tube-shaped volume that points down the positive x-axis for the default BirthPoint setting.

If size is a list of two positive numbers {width, height}, then GridOfRays forms a rectangular grid of dimensions {width, height}. If size is a single number, then GridOfRays forms a circular grid of rays that has a diameter dictated by size. If size is a list of two negative numbers {-width, -height}, then GridOfRays forms an elliptical grid of elliptical dimensions {width, height}.

The number of rays in each of the grid dimensions is given in the option NumberOfRays. NumberOfRays may also point to a list of two numbers {rays1, rays2} for each direction of the grid of starting points. For circular and elliptical shapes the total number of rays is (rays1-1)*rays2+1 to get a single ray at the center.

The seed parameter is optional and is used to generate more elaborate ray patterns. When it is present, it specifies additional light sources to be nested with the basic GridOfRays result. When PropagateSystem is used for the ray trace, GridOfRays produces a set of Ray objects. However, with TurboTrace calculations, a TurboRays object is generated from GridOfRays instead. The distribution of rays is controlled by the GridSpacing option and the starting origin is defined by the BirthPoint option.

See also: NumberOfRays, MonteCarlo, GridSpacing, SourceFraction, SourceOffset, BirthPoint, SingleRay, CircleOfRays, ConeOfRays, WedgeOfRays, LineOfRays, PointOfRays, CustomRays, FieldOfRays, GaussianBeam, and RainbowOfRays.

GridSize

GridSize -> spacings is an option of DrawSystem/AnalyzeSystem and ShowSystem that indicates the spacing of ruled lines.
GridSize can accept one, two, or three number values for indicating different spacings in each measurement direction. GridSize works with PlotType and supplies information for the standard GridLines and FaceGrids options.

GridSpacing

GridSpacing -> spacingfunction is an option of ray sources that designates the spacing of rays to be generated by a ray-source function.

The spacingfunction takes a coordinate parameter as an argument that changes with both the source function type and the CoordinateSystem setting. With CoordinateSystem -> CartesianCoordinates, the spacingfunction often takes the projected grid in the y-z-plane with unity dimensions. However, with CoordinateSystem -> PolarCoordinates, the coordinate parameters are usually angles in the x-y and x-z plane.
In general, spacingfunction[symbols] must yield a compilable expression. For RainbowOfRays, the spacingfunction returns the wavelength and intensity distribution. For two-dimensional sources as well as for RainbowOfRays, the spacingfunction is a list of two functions. In general, each ray-source function type can have a different GridSpacing format requirement. For example, with LineOfRays, GridSpacing -> Function[Log[#]] produces a logarithmic spacing. With RainbowOfRays, GridSpacing ->{Function[#], Function[Exp[-1000*(#-0.6)^2]]} produces a broad spectral line at 0.6 microns. The default translation is Function[#], the default for RainbowOfRays is {Function[#], Function[1]}. Internally a gridpoint is calculated as spacingfunction[value].

The argument of GridSpacing changes for each type of source function. Here are several examples:
LineOfRays, WedgeOfRays: y-
ConeOfRays, CircleOfRays:
GridOfRays, PointOfRays: the x and y coordinates for rectangular shapes
RainbowOfRays:

Here, the circumference position can be either a length or an angle with different the light source shapes. Correspondingly, x, y, and radius coordinates can be either lengths or opening angles.

GrinLens

GrinLens designates an unimplemented component that focuses rays according to a gradient index profile.

GRINLens

GRINLens[aperture, length] defines an  optical lens component that incorporates the behavior of graded-index refraction. When the aperture parameter is a single number, the aperture specifies a circular boundary and the lens is constructed with a cylindrical refractive surface model for its edges. For shaps, the edge surfaces of the lens are not presently modeled. GRINLens[radius1, radius2, aperture, length] and GRINLens[function1, function2, aperture, length] are also supported by GRINLens. See also: DefaultGRINIndex, GradeRefraction.

Group

Group is an option of Move that identifies a group of objects. Group -> objectnumber selects an object representing the group, Group -> {groupposition, grouprotationmatrix} sets the group in the global coordinates. If the option Group is not present or its values are not valid, the orientation and position of a group is given by its first object. See also: Move, MoveGraphicalOutput, PositionRelative, TiltRelative, PositionGroup, TiltGroup, TwistGroup.

GroupDescription

GroupDescription is an obsolete option of that is no longer in use.

GroupLabels

GroupLabels -> {labelnames} is an option of BuildComponent that replaces the previously defined values of Labels in Component with one or more new label names.
GroupLabels is usually accompanied with a new specification for LabelPositions. See also: Labels and LabelPositions.

GroupMagnification

GroupMagnification is a database rule name that specifies the overall magnification of a lens system.
See also: Magnification.

HalfBallLens

HalfBallLens[diameter, label, options] denotes an hemispherical refractive component.
With the option setting Centered -> True, HalfBallLens is created with its flat, second surface at the coordinate origin. With Centered -> False, BallLens is created with its first surface centered about the origin and its second surface positioned down the positive x axis. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

HeldAxesCalculation

HeldAxesCalculation -> Hold[code] is a rule of HeldTraceKernel that holds a CompoundExpression with the code calculating the local coordinates of a ray.


Axes -> False suppresses the calculation of the local values. A three-dimensional local coordinate system is given by the XAxis parallel to the surface in ray direction, the YAxis perpendicular to the ray and the plane of incidence, and the ZAxis perpendicular to the surface in ray direction. The PAxis is perpendicular to the ray in the plane of incidence. The amplitude of the incident ray is given by RayAmplitude, the projection on the YAxis and PAxis as perpendicularamplitude and parallelamplitude. The ray tilt projections on XAxis and ZAxis are raytiltz, raytiltx.
HeldAxesCalculation is used for the creation of RayTraceFunction by TurboTrace. Some building blocks combine the geometry and wave calculations to get faster code. See also: HeldTraceKernel.

HeldAxesList

HeldAxesList -> listofrules is a rule that holds a list with code to define some values in local surface coordinates.


HeldAxesList is used for the creation of RayTraceFunction by TurboTrace. See also: HeldTraceKernel.

HeldBoundaryCalculation

HeldBoundaryCalculation -> Hold[code] is a rule of HeldTraceKernel that holds a CompoundExpression with the code checking intersections for validity.


HeldBoundaryCalculation is used for the creation of RayTraceFunction by TurboTrace. See also: HeldTraceKernel.

HeldBoundaryList

HeldBoundaryList -> listofrules is a rule that holds a list with the code checking intersections for validity.


HeldBoundaryList is used for the creation of RayTraceFunction by TurboTrace. See also: HeldTraceKernel.

HeldComponent

HeldComponent[genetic traits] is a Component object that has the HoldAll attribute set. See also: Component.

HeldDeflectionInitialization

HeldDeflectionInitialization -> Hold[code] is a rule of HeldTraceKernel that holds a CompoundExpression with the code initializing the deflection calculation.

A surface normal matrix, component and surface number as well as the ray before the deflection are assigned. HeldDeflectionInitialization is used for the creation of RayTraceFunction by TurboTrace. See also: HeldTraceKernel.

HeldDeflectionInitializationList

HeldDeflectionInitializationList -> listofrules is a rule that holds a list with code to initialize symbols before the deflection calculation.


HeldDeflectionInitializationList is used for the creation of RayTraceFunction by TurboTrace. See also: HeldTraceKernel.

HeldDeflectionList

HeldDeflectionList -> listofrules is a rule that holds a list with the code calculating the deflection.


HeldDeflectionList is created automatically or may be given by a user with the function HeldTraceKernel. HeldDeflectionList is used for the creation of RayTraceFunction by TurboTrace. See also: HeldTraceKernel.

HeldGeometryCalculation

HeldGeometryCalculation -> Hold[code] is a rule of HeldTraceKernel that holds a CompoundExpression with the code calculating the new ray directions returning a list of rays.

This code is executed as first step to get new rays. The deflection initialization provides values for some local values, given in a HeldAxesCalculation rule.
For example, a reflection yields HeldGeometryCalculation -> Hold[RayTilt = RayTilt - 2*ZAxis*Dot[ZAxis,RayTilt]; {Ray}].
HeldGeometryCalculation is used for the creation of RayTraceFunction by TurboTrace. Some building blocks combine the geometry and wave calculations to get faster code. See also: HeldTraceKernel.

HeldGeometryList

HeldGeometryList -> listofrules is a rule that holds a list with the code calculating the geometry (and wave values) of a deflection.


HeldGeometryList is used for the creation of RayTraceFunction by TurboTrace. See also: HeldTraceKernel.

HeldGraphicalOutput

HeldGraphicalOutput[graphics] is an object containing GraphicalOutput information that has the Hold attribute.
See also GraphicalOutput.

HeldHoleCalculation

HeldHoleCalculation -> Hold[code] is a rule of HeldTraceKernel that holds a CompoundExpression with the code checking intersections for being inside a surface hole.


HeldHoleCalculation is used for the creation of RayTraceFunction by TurboTrace. See also: HeldTraceKernel.

HeldHoleList

HeldHoleList -> listofrules is a rule that holds a list with the code checking intersections for being inside a surface hole.


HeldHoleList is used for the creation of RayTraceFunction by TurboTrace. See also: HeldTraceKernel.

HeldInitialization

HeldInitialization -> Hold[code] is a rule of HeldTraceKernel that holds a CompoundExpression with the code to be executed  before the ray-trace.

Usually, the code initializes all symbols newly introduced. For example, a unidimensional real vector and an integer scalar can yield HeldInitialization -> Hold[vector = {1.}; scalar = 1].
HeldInitialization is used for the creation of RayTraceFunction by TurboTrace. See also: HeldTraceKernel.

HeldIntersectionCalculation

HeldIntersectionCalculation -> Hold[code] is a rule of HeldTraceKernel that holds a CompoundExpression with the code to find ray-surface intersections.


HeldIntersectionCalculation is used for the creation of RayTraceFunction by TurboTrace. See also: HeldTraceKernel.

HeldIntersectionList

HeldIntersectionList -> listofrules is a rule that holds a list with the code to calculate a ray-surface intersection.


HeldIntersectionList is used for the creation of RayTraceFunction by TurboTrace. See also: HeldTraceKernel.

HeldOpticalSystem

HeldOpticalSystem[{listofrays}, {listofsources}, {listofcomponents}, GraphicalOutput[...], Options->opts] is an object containing an ordered listing of Ray objects, Component objects, and GraphicalOutput that has the Hold attribute.
See also OpticalSystem.

HeldPolarizationCalculation

HeldPolarizationCalculation -> Hold[code] is a rule of HeldTraceKernel that holds a CompoundExpression with the code calculating the new polarization.

A new rotation matrix and polarization is calculated for all deflected rays. The option Polarization -> False may suppress this calculation. HeldPolarizationCalculation is used for the creation of RayTraceFunction by TurboTrace. See also: HeldTraceKernel.

HeldPolarizationList

HeldPolarizationList -> listofrules is a rule that holds a list with code for a new rotation matrix and polarization.


HeldTransformationMatrixList is used for the creation of RayTraceFunction by TurboTrace. See also: HeldTraceKernel.

HeldRayEndCalculation

HeldRayEndCalculation -> Hold[code] is a rule of HeldTraceKernel that holds a CompoundExpression with the code to calculate a new ray end and optical length.


HeldRayEndCalculation is used for the creation of RayTraceFunction by TurboTrace. See also: HeldTraceKernel.

HeldRayEndList

HeldRayEndList -> listofrules is a rule that holds a list with the code to get the ray to the new surface.


HeldBoundaryList is used for the creation of RayTraceFunction by TurboTrace. See also: HeldTraceKernel.

HeldRayInitialization

HeldRayInitialization -> Hold[code] is a rule of HeldTraceKernel that holds a CompoundExpression with the code to be executed before the ray-surface-intersection calculation.

For example, the local ray tilt is calculated here. HeldRayInitialization is used for the creation of RayTraceFunction by TurboTrace. See also: HeldTraceKernel.

HeldRayInitializationList

HeldRayInitializationList -> listofrules is a rule that holds a list with assignments of ray values.


HeldRayInitializationList is used for the creation of RayTraceFunction by TurboTrace. See also: HeldTraceKernel and RayTraceFunction.

HeldSurfaceInitialization

HeldSurfaceInitialization -> Hold[code] is a rule of HeldTraceKernel that holds a CompoundExpression with the code to be executed after the ray initialization and before the ray-surface-intersection calculation.

It sets a few surface specific values and is normally not changed. HeldSurfaceInitialization is used for the creation of RayTraceFunction by TurboTrace. See also: HeldTraceKernel.

HeldSurfaceInitializationList

HeldSurfaceInitializationList -> listofrules is a rule that holds a list with assignments of surface values.


HeldSurfaceInitializationList is used for the creation of RayTraceFunction by TurboTrace. See also: HeldTraceKernel.

HeldSymbolTypes

HeldSymbolTypes -> Hold[listofsymbols] is a rule of HeldTraceKernel that holds a list of symbol declarations.

The format is the same as used in Compile. For example, a declaration of a one-dimensional real vector and a complex scalar is given as HeldSymbolTypes -> Hold[{{vector,_Real,1}, {scalar,_Complex}}]. The declarations are used to generate a custom tracing engine of TurboTrace.
HeldSymbolTypes is used for the creation of RayTraceFunction by TurboTrace. See also: HeldTraceKernel.

HeldTraceKernel

HeldTraceKernel -> {heldcode} denotes the ray-tracing behavior at component surfaces.


HeldTraceKernel is used by TurboTrace to help construct the compiled RayTraceFunction information. The rule corresponds to a function HeldTraceKernel[label, parameters, options]. As an example, a mirror with the reflectance Function[reflectance*Temperature/.#], is accessed with HeldTraceKernel[Reflection, Function[reflectance], {Temperature -> 20}]. The options are used to replace values that are not present in TurboRays.
The heldcode contains the information of the evaluated DeflectionFunction rule, but uses ray option names for parameters. For example, a transmission with 80% transmittance yields HeldWaveCalculation -> Hold[AllCreatedRays = Map[(Intensity = Intensity * 0.8; Ray)&, AllCreatedRays]]. The heldcode may access all information being used in TurboRays. A ray is present as the symbol Ray, being a placeholder like the ray option names. AllCreatedRays represents all rays being created by a deflection.
The symbols of built-in kernels are in the Rayica private context ($RayicaPrivateContext). If user code is not defined with the private context being accessible ($Context or $ContextPath set accordingly), the symbols must be accessed with full qualified names, context included.
IndependentScattering, AddTo, ReplaceFor, and TakeFrom are not taken into account. See also: DeflectionFunction, SurfaceIntersections, NoSurfaceIntersection.

HeldTransformationMatrixCalculation

HeldTransformationMatrixCalculation -> Hold[code] is a rule of HeldTraceKernel that holds a CompoundExpression with the code calculating a transformation matrix.

With this matrix, vectors can be rotated to the coordinate system of the deflected rays. The PAxis, see help on HeldGeometryCalculation, can be transformed to the new system with Dot[TransformationMatrix, PAxis]. Transform -> False skips the calculation of the matrix.
HeldTransformationMatrixCalculation is used for the creation of RayTraceFunction by TurboTrace. See also: HeldTraceKernel.

HeldTransformationMatrixList

HeldTransformationMatrixList -> listofrules is a rule that holds a list with code to rotate vectors according to the new ray tilt.


HeldTransformationMatrixList is used for the creation of RayTraceFunction by TurboTrace. See also: HeldTraceKernel.

HeldWaveCalculation

HeldWaveCalculation -> Hold[code] is a rule of HeldTraceKernel that holds a CompoundExpression with the code calculating the new wave parameters, like intensity.

For example, a transmission of 50% yields HeldWaveCalculation -> Hold[AllCreatedRays = Map[(Intensity = Intensity * 0.5; Ray)&, AllCreatedRays]]. HeldWaveCalculation is used for the creation of RayTraceFunction by TurboTrace. See also: HeldTraceKernel.

HeldWaveList

HeldWaveList -> listofrules is a rule that holds a list with the code calculating the wave values of a deflection.


HeldWaveList is used for the creation of RayTraceFunction by TurboTrace. See also: HeldTraceKernel.

HerzbergerFunction

HerzbergerFunction[a, b, c, d, e] takes five terms and creates the pure function Function[(a + b/(WaveLength^2-0.028) + c/(WaveLength^2-0.028)^2 + d*WaveLength^2 + e*WaveLength^4)/.#] used to model the index of refraction versus wavelength for various materials.
HerzbergerFunction is used together with ModelRefractiveIndex to designate a new material model. HerzbergerFunction is also used by DataToRayica to model Germanium and other infrared crystalline materials. See also: ModelRefractiveIndex, SellmeierFunction, IndexFunction, IndexInterpolationFunction, GlassCodeFunction, and DataToRayica.

Hole

Hole[component, holeaperture, options] is a generic building block for creating a hole within a component surface.
The holeaperture parameter specifies the hole dimensions, which can be either circular, rectangular, or polygonal. Hole also modifies the component rendering to show the hole. You can use the HoleOffset option to position the hole away from the affected surface center.
The options TakeFrom, AddTo and ReplaceFor as well as Options[HoleBoundary] show Rayica`s internal behavior and are ignored by Hole.

HoleBoundary

HoleBoundary is a rule of Ray that gives the hole aperture dimensions for the last surface to intercept the ray.
HoleBoundary is also a rule parameter of Component and is nested within the Surfaces rule when a hole in the surface is present. Its value is always a list of boundaries.
See also: SymbolicHoleBoundary and HoleOffset.

HoleBoundaryLabel

HoleBoundaryLabel -> label is a rule within TurboSurfaces that designates a boundary type of a hole.

HoleOffset

HoleOffset is a rule of Ray that gives the offset dimensions of a hole aperture for the last surface to intercept the ray.
HoleOffset is also a rule parameter of Component and is nested within the Surfaces rule when a hole in the surface is present. Its value is always a list of offsets. It is independent of the values given in the OffAxis option, it does not add to these values.
See also: HoleBoundary and SymbolicHoleOffset.

HollowCornerCube

HollowCornerCube[diameter, label, options] refers to a three-sided retro-reflective mirror arrangement having a single circular entrance/exit face that is located in the y-z plane and three reflecting surfaces that are arranged about the positive x-axis.
HollowCornerCube behaves like a corner cube. There can be two different forms of HollowCornerCube: with FullForm -> True, the reflective surfaces have square boundaries; with FullForm -> False, the reflective surfaces have polygonal boundaries that shorten the overall thickness of the reflector. For Baffled -> True, HollowCornerCube is created with a circular-shaped absorbing annulus placed at the entrance plane. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: SolidCornerCube, WedgePrism, RoofPrism, RhomboidPrism, and PentaPrism.

Hologram

Hologram denotes an unimplemented component that behaves as a hologram, recording various rays positions and directions and reconstructing them for various WaveLengths and reference phase fronts.

HorizontalSymmetry

HorizontalSymmetry is a value of FresnelSymmetry that implies that the surface grooves are symmetric about the component's vertical axis.
See FresnelSymmetry.

HousingBoundary

HousingBoundary is a database rule name that specifies the dimensions of an inert housing structure that surrounds an optical component.
HousingBoundary may follow the Rayica convention for lens apertures, where a single number indicates the diameter of a circular shape and a list of two numbers indicate a rectangular shaped boundary. However, HousingBoundary can also be used to specify the shapes of other object forms. See also: ComponentBoundary, ClearAperture and SurfaceBoundary.

Identify

Identify is an option of AnalyzeSystem/ShowSystem based on mouse-generated coordinatepoints that returns internally information on a selected object in a list.
Identify -> {coordinatepoints} uses a list of coordinatepoints taken with the mouse from the rendered graphics to select the objects getting displayed. Object-sequence positions may also be used to specify objects instead of coordinatepoints. If no object is found, Identify returns information on all invisible Component objects.
The list returned is: {objectnumber, objectname, objectparameters, objectoptions, objectdefaultoptions, Move, moveparameters, moveoptions, movedefaultoptions, object}.
See also: DrawSystem, PlotType, ToleranceSelection, ToleranceDoubleClick, SnapGrid, SnapGridOffset, Move, MoveReflected, Arrange, Rotate, Copy, Constrain, Snap, Align, Transform, Add, Swap, Remove.

IncrementComponentNumber

IncrementComponentNumber[component, componentincrement, options] is a generic building block that increments ComponentNumber, relative to its present value.
IncrementComponentNumber is only valid for PropagateSystem calculations and is not recognized by TurboTrace. In this regard, IncrementComponentNumber is now obsolete and Resonate should be used instead.

IndependentScattering

IndependentScattering is an option of most generic building blocks that controls the generation of the WaveFrontID rule.

True creates for every incoming ray a new identifier, False assigns an identifier corresponding to the slot position of a generated ray in the list of generated rays. For example, diffusers usually use True, refraction with Fresnel reflection uses False. For a component, IndependentScattering can also specify a list that distributes over the generic building blocks being called.
As an option to TurboTrace, IndependentScattering -> Automatic collects all wavefronts of the seed rays together that are deflected with the option IndependentScattering -> True. For example a diffuser then does not create one surface path for every incident seed ray, but only one. IndependentScattering -> False collects all wave fronts together. Both settings do not change the rule WaveFrontID.
IndependentScattering is also an unauthorized ray parameter.

IndependentSources

IndependentSources is an option of FindFocusFast that controls what rays are taken to find the focus. For True, each source has its own focus. Otherwise the focus built by all rays is calculated. IndependentSources is independent of the option IndependentWaveFronts.

IndependentSurfaces

IndependentSurfaces is a value of AffectedSurfaces of BuildComponent that indicates a different deflection function segment will be used at each surface.
IndependentSurfaces can only be used when BuildComponent receives a listing of new deflection function segments to match the total number of the surfaces present. In general, ray-tracing function traits are added to a surface by appending the ray-tracing function position (within Deflections) to the affected DeflectionNumber value within ConfinedPaths.
See also: AllDeflections, FirstSlot, AllSurfaces, NotFirstSlot, LastSlot, NotLastSlot, and AffectedSurfaces.

IndependentWaveFronts

IndependentWaveFronts is an option of FindFocusFast that controls what rays are taken to find the focus. For True, each wave front has its own focus. Otherwise the focus built by all wave fronts is calculated. IndependentWaveFronts is independent of the option IndependentSources.

IndexCoefficients

IndexCoefficients -> listofcoefficients is a database rule name that specifies coefficients for the refractive index function specified by RayicaFunction.
See also WaveLengthRange, SellmeierFunction and HerzbergerFunction.

IndexFunction

IndexFunction[a0, a1, a2, a3, a4, a5] takes six terms and creates the pure function Function[Sqrt[a0 + a1*WaveLength^2 + a2*WaveLength^-2 + a3*WaveLength^-4 + a4*WaveLength^-6 + a5*WaveLength^-8]/.#] used to model the index of refraction versus wavelength for various materials.
IndexFunction is used together with ModelRefractiveIndex to designate a new material model. IndexFunction (also known as the Schott glass formula) is commonly generated by CreateRefractiveIndexModel and used to model most of Rayica's built-in materials. See also: ModelRefractiveIndex, IndexInterpolationFunction, SellmeierFunction, CreateRefractiveIndexModel, GlassCodeFunction, and HerzbergerFunction.

IndexInterpolationFunction

IndexInterpolationFunction[{{wavelength, index}, ..}, options] is used to create an interpolating function to represent the index of refraction versus wavelength for various materials.
IndexInterpolationFunction is used together with ModelRefractiveIndex to designate a new material model. IndexInterpolationFunction internally uses Interpolation and InterpolatingFunction. See also: Interpolation, InterpolatingFunction, ModelRefractiveIndex, IndexFunction, SellmeierFunction, CreateRefractiveIndexModel, GlassCodeFunction, and HerzbergerFunction.

InfinityFocusAngle

InfinityFocusAngle is an option of FindFocusFast that controls what maximum angle deviation from the mean ray directions is considered to represent a focus at infinity.
For a focus at infinity, BackFocalLength is set to Infinity and FocalPoint gives the position, where the spot size was calculated.

InitializeSource

InitializeSource[inputrays, sourcename, sourceparameters, options] is a utility function that is used by Rayica's built-in light source definitions to create a new Source object.
InitializeSource takes the given sourcename, sourceparameters, and any nested Source or Ray objects specified by inputrays, and returns a new Source object. During this initialization of the Source, InitializeSource builds and installs the necessary rules and structures which make up a Source object.

InputEdgeThickness

InputEdgeThickness specifies whether the center thickness or the edge thickness is given by the thickness input argument of an optical component function.
InputEdgeThickness -> True denotes that the thickness argument of component function gives the component edge dimension. InputEdgeThickness -> False indicates that the thickness argument of component function specifies the center of the component. InputEdgeThickness is used primarily with curved mirrors and wedge-shaped optics such as WedgePrism and WedgeBeamSplitter. See also: FlatSubstrate and FrontSurface.

InsertDeflection

InsertDeflection[component, options] is a generic building block used to connect surfaces to additional deflections.


InsertDeflection -> deflectionnumbers takes numbers for deflections and attaches them to all surfaces given in the option AffectedSurfaces.

See also: RemoveDeflection, AffectedSurfaces, AddDeflection, AddSurface, and RemoveSurface.

InsideHoleBoundaryQ

InsideHoleBoundaryQ -> function designates a function that returns True if the given parametric point is within the hole boundary.
The InsideHoleBoundaryQ function can simultaneously manage several holes within the same surface. The InsideHoleBoundaryQ rule is located within the Surfaces rule of a component. See also: SymbolicInsideHoleBoundaryQ and HoleBoundary.

InsideMedium

InsideMedium is an option of Pipe and Box that sets the value of IntrinsicMedium used within the middle of Pipe and Box.

InsideSurfaceBoundaryQ

InsideSurfaceBoundaryQ -> function designates a function that returns True if the given parametric point is within the surface boundary.
InsideSurfaceBoundaryQ is constructed inside ComponentFoundation from the SurfaceBoundary information and is automatically embedded within the SurfaceIntersectionFunction by ModelSurfaceRayIntersections. The InsideSurfaceBoundaryQ rule is also located within the Surfaces rule of a component.
See also: SurfaceBoundary, BoundaryChecked, ModelSurfaceRayIntersections, and SurfaceIntersectionFunction.

Intensity

Intensity is a rule of Ray that gives the ray's intensity value.

See also: IntensityFunction, IntensityScale, PowerOutput, and ThresholdIntensity.

IntensityFunction

IntensityFunction -> f is an option of most sources that specifies a function to calculate intensities. The arguments to f are the Intensity, RayTilt, RayEnd, and RaySourceNumber. The evaluation of f[symbols] must be a compilable expression, which returns an intensity value. E. g. a Gaussian beam can be modelled with GridOfRays[10, IntensityFunction -> Function[#1*Exp[-Dot[#3,#3]/25]]].


IntensityFunction is also a returned rule of FindIntensity that contains the calculated intensity function information. In addition, IntensityFunction is also the head of a function that contains intensity information.

IntensityScale

IntensityScale is an option of Ray and a passed parameter of TurboRays that specifies a fractional scaling value for the Intensity parameter in order to correspond with the total integrated PowerOutput of the light source.


IntensityScale is dynamically generated at the start of the ray-trace and is used for making energy calculations by some built-in functions, such as FindIntensity, and depends on the specified NumberOfRays as well as any specified IntensityFunction. Note that IntensityScale does not directly alter the value of Intensity but instead specifies a scaling for Intensity. IntensityScale is currently only implemented for TurboTrace calculations.

See also: PowerOutput, Intensity, IntensityFunction, and FindIntensity.

IntensityScaleFactor

IntensityScaleFactor is an option of FindIntensity that scales the intensity values.

InterceptHole

InterceptHole -> True/False is an option that indicates whether the traced rays will pass through holes without interception or not.

InternalDirectionChange

InternalDirectionChange is a rule of Ray that is an internal flag variable. It is used by PropagateSystem to indicate an internal reflection inside a double-surfaced component.
This causes Ray to increment backwards within the component.

InternalTransmittance

InternalTransmittance -> {{wavelength, alpha},...} is a database rule name that gives a list of bulk transmittance values (alpha in cm^-1) for various wavelengths (given in nm).

IntersectionNumber

IntersectionNumber is a rule of Ray that gives the total number of surface intersections encountered for the creation of the specified Ray object.
SurfaceNumber, ComponentNumber, ConfinedPosition, UnconfinedPosition, IntersectionNumber, GenerationNumber, and ConfinedNumber are all pointer parameters stored in Ray.

IntrinsicCylindricalSurface

IntrinsicCylindricalSurface[radius, aperture, medium1, medium2, label, options] refers to a cylindrical component occupying half a complete cylinder that models the refractive index boundary between two different refractive mediums.
Refractive components encountered by rays that have previously encountered IntrinsicCylindricalSurface are refracted using the new IntrinsicMedium value given by IntrinsicCylindricalSurface. IntrinsicCylindricalSurface uses parameters medium1 and medium2 to obtain intrinsic index functions on each side of the fluid boundary. If the ray is coming from an environment that has an intrinsic index given by medium1, then the value of IntrinsicMedium of the Ray object is replaced by medium2. Likewise, if the ray is coming from an environment that has an intrinsic index given by medium2, then the value of IntrinsicMedium of the Ray object is replaced by medium1. IntrinsicCylindricalSurface is created with its surface centered about the origin. The aperture parameter may designate a circle, rectangle, or polygon depending on the number and type of elements listed by it.

The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics. Please mote that all IntrinsicSurface-related functions are only intended for very specialized applications that involve changing the surrounding ambient environment of an optical system and are seldom ever used. For most applications involving refractive surfaces, a LensSurface-type function should be used instead.
See also: SwitchIntrinsicMedium, IntrinsicSurface, IntrinsicSphericalSurface, and IntrinsicCylindricalSurface are all related components.

IntrinsicIndex

IntrinsicIndex is a rule of Ray giving a label that identifies the background refractive index value surrounding components.
See also: IntrinsicMedium, OpticalMedium, ComponentMedium, and RefractiveIndex are other options involving the refractive index.

IntrinsicMedium

IntrinsicMedium is a rule of Ray giving a label that identifies the background optical medium surrounding components.
As examples: Air, Water, and Vacuum are typical settings for IntrinsicMedium. IntrinsicMedium is also an option of Refraction. Then, it can take a medium name or general material characteristics with the same values Theory can take. Any rule specified in Refraction is applied before ray options, which then must contain the same intrinsic medium. This option narrows the possible IntrinsicMedium options of Ray, but can speed up calculations.
The IntrinsicMedium rule of ray always specifies a material that is isotropic and dielectric. The refractive index model is not checked for correct input.
See also: OpticalMedium, ComponentMedium, and RefractiveIndex are other options involving the refractive index.

IntrinsicSphericalSurface

IntrinsicSphericalSurface[radius, aperture, medium1, medium2, label, options] designates a spherical component that has a given radius of curvature that models the refractive index boundary between two different refractive mediums.
Refractive components encountered by rays that have previously encountered IntrinsicSphericalSurface are refracted using the new IntrinsicMedium value given by IntrinsicSphericalSurface. IntrinsicSphericalSurface uses parameters medium1 and medium2 to obtain intrinsic index functions on each side of the fluid boundary. If the ray is coming from an environment that has an intrinsic index given by medium1, then the value of IntrinsicMedium of the Ray object is replaced by medium2. Likewise, if the ray is coming from an environment that has an intrinsic index given by medium2, then the value of IntrinsicMedium of the Ray object is replaced by medium1. IntrinsicSphericalSurface is created with its surface centered about the origin. The aperture parameter may specify a circle, rectangle, or polygon depending on the number and type of elements listed by it.

The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics. Please mote that all IntrinsicSurface-related functions are only intended for very specialized applications that involve changing the surrounding ambient environment of an optical system and are seldom ever used. For most applications involving refractive surfaces, a LensSurface-type function should be used instead.

See also: SwitchIntrinsicMedium, IntrinsicSurface, IntrinsicSphericalSurface, and IntrinsicCylindricalSurface are all related components.

IntrinsicSurface

IntrinsicSurface[aperture, medium1, medium2, label, options] denotes a planar component that models the refractive index boundary between two different refractive mediums.
Refractive components encountered by rays that have previously encountered IntrinsicSurface are refracted using the new IntrinsicMedium value given by IntrinsicSurface. IntrinsicSurface uses parameters medium1 and medium2 to obtain intrinsic index functions on each side of the fluid boundary. If the ray is coming from an environment that has an intrinsic index given by medium1, then the value of IntrinsicMedium of the Ray object is replaced by medium2. Likewise, if the ray is coming from an environment that has an intrinsic index given by medium2, then the value of IntrinsicMedium of the Ray object is replaced by medium1. IntrinsicSurface is created with its surface centered about the origin. The aperture parameter may denote a circle, rectangle, or polygon depending on the number and type of elements listed by it.

The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics. Please mote that IntrinsicSurface is only intended for very specialized applications that involve changing the surrounding ambient environment of an optical system and are seldom ever used. For most applications involving refractive surfaces, the LensSurface function should be used instead.

See also: SwitchIntrinsicMedium, IntrinsicSurface, IntrinsicSphericalSurface, IntrinsicCylindricalSurface, and CustomIntrinsicSurface.

Isotropic

Isotropic is a value of Theory to characterize an isotropic medium.

JacobianMatrix

JacobianMatrix is a rule sometimes embedded within Surfaces of Component that gives a matrix of symbolic functions to be used by the Jacobian option of FindRoot for finding the ray/surface intersections at a particular surface. The functions take as arguments the ray length, the surface coordinates and the ray tilt as a sequence of six values.

JonesMatrix

JonesMatrix[component,jonesmatrix,axisangle,options] is a generic building block that linearly transforms the polarization state of rays.
The jonesmatrix parameter uses a 2x2 Jones transformation matrix. The axisangle parameter, given in Degrees, determines the direction of the Jones matrix coordinate axis along the optical surface with respect to the horizontal axis of the local surface coordinate system. The Transmission -> transmissionvalue option can be used to weight the outgoing intensity of each outgoing ray, where transmissionvalue can be either a number between 0 and 100, a list of {wavelength, transmission} values, or a Function-headed expression that depends on ray options such as WaveLength. Otherwise, ModelIntensity[componentmedium] = {transmissionvalue} can be defined to hold an absorption function or a list of {wavelength, transmission} values. See also: Polarization, JonesMatrixOptic, LinearPolarization, and PhaseRetardation.

JonesMatrixOptic

JonesMatrixOptic[jonesmatrix, axisangle, aperture, thickness, label, options] is a flat surface optic used to transform the ray polarization information according to the given jonesmatrix.
The jonesmatrix parameter uses a 2x2 Jones matrix. The axisangle parameter, given in Degrees, determines the direction of the Jones matrix coordinate axis along the optical surface with respect to the horizontal axis of the local surface coordinate system. If the thickness parameter is zero or is omitted, then the optic will be created without any thickness. The Transmittance -> transmissionvalue option can be used to weight the outgoing intensity of each outgoing ray, where transmissionvalue can be either a number between 0 and 100, a list of {wavelength, transmission} values, or a Function-headed expression that depends on ray options such as WaveLength. Otherwise, ModelIntensity[componentmedium] = {transmissionvalue} can be defined to hold an absorption function or a list of {wavelength, transmission} values. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: Polarization, JonesMatrix, LinearPolarizer, and RetardationPlate.

JumpToRayicaSourceCode

JumpToRayicaSourceCode[symbol, filename] tries to jump to the definition of symbol inside the given file. JumpToRayicaSourceCode[symbol, filename, type] jumps to the specified kind of definition.

KDPToData

KDPToData[stringdata, options] is used to import KDP lens data into Rayica's database format.
KDPToData requires that the stringdata for import be given in a single ascii string. Usually, this operation is accomplished by directly copying and pasting the KDP data from a text editor into a Mathematica notebook with double quotation marks placed manually on either side of the pasted data. KDPToData then converts this string information into a rule-based, list format that is recognized by Mathematica. The translation process can be further modified by giving additional options to KDPToData. Once converted, the new information can be edited further with EditData, saved to disk with SaveData, and converted to optical component models with DataToRayica. KDPToData is presently restricted to lens data that describe centered, refractive, spherical, multiple lens-surfaces with field stops. KDP is a Trademark of Engineering Calculations, Glendale, CA. See also: KDPToRayica, DataToRayica, ExcelToData, ExcelToRayica, CodeVToData, CodeVToRayica, ZemaxToData, and ZemaxToRayica.

KDPToRayica

KDPToRayica[stringdata, options] is used to import and convert KDP refractive lens data into one or more optical lens models for Rayica.
KDPToRayica requires that the stringdata for import be given in a single ascii string. Usually, this operation is accomplished either by opening the KDP data file inside Mathematica or by manually copying and pasting the relevant data into an existing Mathematica notebook and, as a final last step, creating a string object by manually placing double-quotation marks on either side of the data. KDPToRayica then converts this string information into one or more optical lens models that work with Rayica. The conversion process can be further modified by giving additional options to KDPToRayica (that get passed internally to StringReplace and EditData). KDPToRayica makes internal calls to KDPToData and DataToRayica. KDPToRayica is presently restricted to lens data that describe centered, refractive, spherical, multiple lens-surfaces with field stops. KDP is a Trademark of Engineering Calculations, Glendale, CA. See also: KDPToData, DataToRayica, ExcelToRayica, CodeVToRayica, and ZemaxToRayica.

KernelScale

KernelScale -> Relative / Absolute is used with FindIntensity to specify the form of the SmoothKernelSize option.


KernelScale -> Relative indicates that the specified SmoothKernelSize dimensions is a relative multiplicative factor of the minimum estimated spatial sampling dimension, as determined from Nyquist sampling criteria. KernelScale -> Absolute denotes that the specified SmoothKernelSize dimensions are given in absolute spatial dimensions. See also: SmoothKernelSize.

KnoopHardness

KnoopHardness is a database rule name that specifies the Knoop hardness of a material.

LabelOffset

LabelOffset is an option of DrawSystem/AnalyzeSystem and ShowSystem that scales the label offset-positions according to the overall dimensions of the system rendering.
See also: ShiftLabels, AddLabels, and RenameLabels.

LabelPositions

LabelPositions -> {{xpos, ypos, zpos}, ...} is an option of Component that indicates the rendering positions of one or more label names in the rendered Component.
Note that the specified values are automatically updated with subsequent Move operations. See also: Labels, Offx, Offy, Offz.

Labels

Labels -> {labelnames} is an option of Component and BuildComponent that supplies one or more label names for various parts of the rendered Component. Each labelname can be an expression, a string or StyleForm[labelname, format].
Labels is usually accompanied with a specification for LabelPositions. See also: LabelPositions.

LabelSurfaces

LabelSurfaces -> True/False/<surface parameter> is an option of ShowSystem that displays either {ComponentNumber, SurfaceNumber} information or one or more specified surface parameters at each component surface in an optical system.

For LabelSurfaces -> True and when a single component element is present, the corresponding SurfaceNumber for each surface is displayed. However, when several components are present and LabelSurfaces -> True is specified, a pair of numbers that correspond with {ComponentNumber, SurfaceNumber} is displayed by each surface. Examples of parameters for LabelSurfaces -> <surface parameter> include: ActiveRegion, SurfaceFunction, and SurfaceCenter. A list of surface parameters may also be specified.

Lambertian

Lambertian is an option of the AddRandomRayTilt and ScatterRays that indicates whether the diffused light is equally distributed about the surface normal or is distributed with the direction of the incoming ray.
For Lambertian -> True, the scattered rays are oriented about the surface normal. For Lambertian -> False, the scattered rays are oriented with the incoming ray direction.

LaSF9

LaSF9 denotes the use of the LaSF9 glass medium.
The refractive index model for LaSF9 is most suitable for the wavelength range of .35 microns to 2.3 microns.

LastSegment

LastSegment labels an unauthorized rule of Ray that is an internal flag variable used by PropagateSystem. It indicates the last segment of each Ray pathway to be propagated through an optical system.

LastSlot

LastSlot is a value of AffectedSurfaces and specifies that the last slot position within each confined path in ConfinedPaths inherits the new ray-tracing function trait.
In general, ray-tracing function traits are added to a surface by appending the ray-tracing function position (within Deflections) to the affected DeflectionNumber value within ConfinedPaths.
See also: AllDeflections, AllSurfaces, FirstSlot, NotFirstSlot, NotLastSlot, AffectedSurfaces, and IndependentSurfaces.

LensDoublet

LensDoublet[r1, r2, r3, aperture, t1, t2, index1, index2, label, options] designates a lens having three spherical surfaces.
The radii of curvatures are specified by r1, r2, and r3, where Infinity is used to indicate planar surfaces. In addition, LensDoublet is specified by two thicknesses: t1, t2. The two refractive indexes must also be specified either as a function of wavelength or using one of the built-in optical material labels. LensDoublet is created with its first surface centered about the origin and the remaining surfaces positioned down the x axis. The aperture parameter may designate a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics. See also: LensTriplet and CompoundLens.

LensSurface

LensSurface[aperture, label, options] denotes a planar component that models the refractive index boundary at a lens surface.
LensSurface is always used in combination with one or more additional LensSurface component types to create a complete lens object. LensSurface is created with its surface centered about the origin. The aperture parameter may denote a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.
See also: SurfaceFacet, LensSurface, SphericalLensSurface, CylindricalLensSurface, ParabolicLensSurface, and CustomLensSurface.

LensTriplet

LensTriplet[r1, r2, r3, r4, aperture, t1, t2, t3, index1, index2, index3, label, options] refers to a lens having four spherical surfaces.
The radii of curvatures are specified by r1, r2, r3, and r4, where Infinity is used to indicate planar surfaces. In addition, LensTriplet is specified by three thicknesses: t1, t2, and t3. The three refractive indexes must also be specified either as a function of wavelength or using one of the built-in index functions. LensTriplet is created with its first surface centered about the origin and the remaining surfaces positioned down the x axis. The aperture parameter may indicate a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics. See also: LensDoublet and CompoundLens.

LimitByReflection

LimitByReflection is an option of the AddRandomRayTilt that indicates whether the LimitScatter feature operates by reflecting the over-scattered rays off the surface or by re-assigning a new random factor to the over-scattered rays.
For LimitByReflection -> True, the over-scattered rays are reflected off the surface. This gives an un-even bias to the ray-scatter distribution. For LimitByReflection -> False, the over-scattered rays are re-assigned new random values to evenly distribute the ray-scatter angles. Note that the LimitByReflection -> True behavior is always used in the ScatterRays function and cannot be switched. See also LimitScatter.

LimitScatter

LimitScatter is an option of the AddRandomRayTilt and ScatterRays that indicates whether the diffused light is restricted to emission from a single side of an optical surface.
For LimitScatter -> True, the scattered rays are limited to emit from one optical surface side. For LimitScatter -> False, the scattered rays are permitted to emit through both surface sides. See also LimitByReflection.

LinearPolarization

LinearPolarization[component, axisangle, options] is a generic building block that causes linearly polarized rays.
The axisangle parameter, given in Degrees, determines the direction of the first polarization state along the optical surface with respect to the horizontal axis of the local surface coordinate system. The Transmittance -> {horizontal,vertical} option can be used to weight the outgoing two polarizations components of the transmitted ray, where horizontal and vertical can be either a number between 0 and 100, a list of {wavelength, transmission} values, or a Function-headed expression that depends on ray options such as WaveLength. Here, the first value of the Transmittance option weights the horizontal polarization state and the second value weights the vertical polarization state. In addition, Reflectance -> {horizontal,vertical} can be used to weight the two polarizations of the outgoing reflected (or second split) ray when the SplitRays option is also invoked.
Instead of giving values for Tramsmittance and Reflectance explicitly, ModelIntensity[componentmedium] = {horizontal,vertical} can be defined to hold two absorption functions or two lists of {wavelength, transmission} values, where ComponentMedium -> {mediumO, mediumE} can be used to define ModelIntensity separately for two split polarized rays. The SplitRays -> True option can be used to create two orthogonally polarized rays that initially propagate in the same direction. SplitRays -> Reflection produces a reflected ray whose polarization is determined by the Reflectance setting and a transmitted ray whose polarization is determined by the Transmittance setting.
See also: Transmittance, Reflectance, SplitRays, Polarization, LinearPolarizer, PhaseRetardation, and JonesMatrix.

LinearPolarizer

LinearPolarizer[axisangle, aperture, thickness, label, options] is a flat surface optic used to create linearly polarized rays along an axis of alignment given by axisangle.
If the thickness parameter is zero or is omitted, then the optic will be created without any thickness. LinearPolarizer[surfacefunction, axisangle, aperture, thickness, options] can also be used to specify a thickness to the polarizer and a nonplaner custom surfacefunction. The axisangle parameter, given in Degrees, determines the direction of the first polarization state along the optical surface with respect to the horizontal axis of the local surface coordinate system. The Transmittance -> {first, second} option can be also used to weight the outgoing intensity of each polarization direction, where first and second can be either a number between 0 and 100, a list of {wavelength, transmission} values, or a Function-headed expression that depends on ray options such as WaveLength. Otherwise, ModelIntensity[componentmedium] = {first, second} can be defined to hold two absorption functions or two lists of {wavelength, transmission} values. ComponentMedium -> {polarizationmaterial, refractivematerial} can also be used to indicate that the polarization material is mounted on a refractive substrate. The SplitRays -> True option can be used to create two orthogonally polarized rays. SplitRays -> Reflection produces a reflected vertically polarized ray and a transmitted horizontally polarized ray. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: SplitRays, Polarization, LinearPolarization, RetardationPlate, and JonesMatrixOptic.

LineOfRays

LineOfRays[seed, linewidth, options] initializes a set of rays in the x-y plane that point down the positive x-axis (for the default BirthPoint setting) and are distributed along the y-coordinate with the specified linewidth.

The seed parameter is optional and is used to generate more elaborate ray patterns. When it is present, it specifies additional light sources to be nested with the basic LineOfRays result. When PropagateSystem is used for the ray trace, LineOfRays produces a set of Ray objects. However, with TurboTrace calculations, a TurboRays object is generated from LineOfRays instead. The distribution of rays is controlled by the GridSpacing option and the starting origin is defined by the BirthPoint option.

See also: CreateRays, NumberOfRays, MonteCarlo, GridSpacing, SourceFraction, SourceOffset, BirthPoint, SingleRay, CircleOfRays, ConeOfRays, WedgeOfRays, GridOfRays, PointOfRays, CustomRays, FieldOfRays, GaussianBeam, and RainbowOfRays.

LineStyle

LineStyle is an option of optical components that carries a list of graphics styles for the rendering of edges and wire-framed surfaces. See also: FillStyle.

ListOptionGeneticQ

ListOptionGeneticQ[x] tests whether x is a list of options for a genetic building block (can be empty). The result is True or False.

LoadRayicaFiles

LoadRayicaFiles[foldername, filename] is a utility to load Rayica files after having saved them. Interface files are loaded in the public Rayica context, the rest is loaded in the Rayica private context. Both parameters can be a list to load multiple files.

Magnetic

Magnetic is a value of Theory, for example returned by ModelRefractionTheory, to characterize a nonconductive, magnetic medium.

MassDensity

MassDensity is a database rule name that specifies the mass density of a material in gm/cc.

MaterialDirectory

MaterialDirectory is an option to LoadData that specifies a directory.
This directory contains data on optical materials.

MaterialFiles

MaterialFiles is an option to LoadData that specifies a list of file names to be loaded.
These files contain information on optical materials.

MaterialRotationMatrix

MaterialRotationMatrix is a rule of Ray and Component that describes the orientation of the material relative to the RotationMatrix of the component. Examples are the gratingvector in Diffraction or indexellipsoid in Refraction. Like the latter, the value of MaterialRotationMatrix is a list of three lists, representing the three base vectors of an orthonormal coordinate system. All material direction dependent values are given in the coordinate system defined by MaterialRotationMatrix. MaterialRotationMatrix may depend on surface coordinates. See also: Diffraction, Refraction, SurfaceNormalMatrix

MeanDispersion

MeanDispersion is a rule name that specifies the refractive index difference of an optical material at chosen two wavelengths, mean dispersion = (nf-nc), and gives a measure of the chromatic aberration of an optical material.
Here, nf and nc are the refractive index values for two different wavelengths specified by the SpectralRegion option. See also: FindGlassNumbers, SpectralRegion, GlassCodeFunction, GlassMap, PartialDispersionRatio, GlassCodeNumber, and AbbeVNumber.

MediumNameQ

MediumNameQ[x] tests whether x is a name for a medium for which ModelRefractiveIndex[x][ray] evaluates to a number or a list with a rule RefractiveIndex -> number. The result is True or False.

MeltingPoint

MeltingPoint is a database rule name that indicates the melting temperature of a material (in degrees Celsius).

MeritType

MeritType is an option of ConstructMeritFunction that indicates the performance criteria to be invoked by ConstructMeritFunction and OptimizeSystem.
MeritType presently has nine possible settings: SurfaceCoordinates, OpticalLength, RayTilt, RMSFocus, {SurfaceCoordinates, Intensity}, {OpticalLength, Intensity}, {RayTilt, Intensity}, {Centered, SurfaceCoordinates}, and {Centered, SurfaceCoordinates, Intensity}. MeritType -> SurfaceCoordinates calculates the beam spot size by using the sum of the squared ray-surface intercept distances from the calculated spot center. MeritType -> {Centered, SurfaceCoordinates} assumes that the spot focus runs through the output surface center. MeritType -> OpticalLength uses the sum of the squared optical path length differences. MeritType -> RayTilt measures the collimation of rays by projecting the average RayTilt value with the individual RayTilt values. MeritType -> RMSFocus measures the intensity-weighted RMS beam spot size in the same manner as FindFocus. When the Intensity parameter is listed with parameters, the performance criteria gets weighted by the sum of the ray intensities present.
MeritType is internally converted by ConstructMeritFunction into particular settings for the ReportedParameter and ReportedFunction options. As an alternative to using the MeritType option, the user can instead work directly with the ReportedParameters and ReportedFunction options.
See also: ConstructMeritFunction, OptimizeSystem, ReportedParameters, and ReportedFunction.

Metallic

Metallic is a value of Theory, for example returned by ModelRefractionTheory, to characterize a conductive, magnetic medium.

Methanol

Methanol indicates the use of a methanol liquid medium at 20 degrees Celsius.
The refractive index model for Methanol is most suitable for the wavelength range of .43 microns to .66 microns.

MinimizationType

MinimizationType is an option of OptimizeSystem that indicates the minimization function to the invoked by OptimizeSystem.
The default setting is usually MinimizationType -> FindMinimum. See also: OptimizeSystem.

MinimumArrowLength

MinimumArrowLength -> length is an option of ShowSystem that sets the minimum geometric length for each ray segment to be rendered as an arrow. Otherwise, MinimumArrowLength -> scale*Max scales the minimum length to the maximum dimension of the resulting graphic. See also: ShowArrows.

MinimumRayLength

MinimumRayLength -> length is an option of PropagateSystem and TurboTrace that controls the minimum allowed ray length.
The number defines, what is considered to be a zero ray length. Rays intersecting the same surface they come from, must have a ray length above this threshold to yield a valid intersection.
See also: PropagateSystem.

Mirror

Mirror[aperture, label, options] and Mirror[aperture, thickness, label, options] denote a planar mirror.
The thickness refers to the refractive substrate of the mirror. If no thickness value is given, the component is a single-sided mirror. Mirror is created with its first surface centered about the origin and its second surface positioned down the positive x axis. The aperture parameter may indicate a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

Mirrored

Mirrored is an option of some built-in component functions that specifies the reflective-coated surfaces present.
Mirrored is handled differently by different component functions, but Mirrored -> True indicates that one or more surfaces within the component are to be reflective and Mirrored -> False indicates that surfaces are not reflective-coated, but may still internally reflect. Mirrored -> {surfacenumbers} is used to specify each reflective-coated surface by the surface number. Finally, Mirrored -> Base is sometimes also used to indicate that the base of the component is reflective-coated. See also: Base.

MirrorSpan

MirrorSpan[{x1, y1}, {x2, y2}, thickness, height, label, options] and MirrorSpan[{x1, y1}, {x2, y2}, height, label, options] are similar to Mirror except that its size and placement are specified by the two two-dimensional coordinates {x1, y1} and {x2, y2}.
The thickness refers to the refractive substrate of the mirror. If no thickness value is given, the component is a single-sided mirror. MirrorSpan spans the specified coordinates and has the specified height. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

MismatchCutOff

MismatchCutOff is an option that denotes a real number that designates the maximum mismatch cutoff value of a diffracting ray.
If a diffraction order has a DiffractionMismatch value greater than specified by MismatchCutOff, the ray is terminated by setting its Intensity parameter to zero. MismatchCutOff is an option of all grating components, as well as the Diffraction genetic building block. However, MismatchCutOff is largely not used anymore since it is only active with CoupledWaveTheory -> False. See also: CoupledWaveTheory, DiffractionMismatch, EfficiencyFunction, Diffraction, Grating.

ModelCoating

ModelCoating[coatingname] and ModelCoating[coatingname, substratename, coatingspecification] is a ray-parameter-dependent function that models the filter properties of a surface coating on respective reflective and refractive components.
For reflective component coatings, ModelCoating should return a single Function that contains the reflective properties of the coating. For refractive components, ModelCoating should return a list of two functions, the first for transmission and the second for reflection, each returning a new intensity and optional polarization value.
The defaults for substratename and coatingspecification are BK7 and 0.532, respectively. If the properties depend only on: WaveLength, Intensity, Polarization, Temperature, Tension, SurfaceCoordinates, WaveTilt, and SurfaceNormalMatrix, the function can be automatically optimized for speed. The coatingspecification can be for example a center wavelength in microns, the coatingname can also be a Reflectance in percent. Calculated values for Intensity and Polarization replace the Fresnel refraction calculation, Polarization, if not calculated, is reset to its original value.
With equal length lists for coatingname and coatingspecification, layered media are modeled. A list of two names for substratename specifies besides the substrate the optical material before the coating, e. g. for special intrinsic media. Such models are not yet built-in in Rayica.
In addition to the existing coating models, user-specified model libraries of coating materials can be created by listing and evaluating ModelCoating[coatingname] = reflectancefunction[...] and ModelCoating[coatingname, substratename, thickness] = {transmittancefunction[...], reflectancefunction[...]} for different coating types. Before the user can define new ModelCoating functions, ModelCoating must first be unprotected or included within the "Models" directory of the Rayica package, behind the file "Models.nb". Ranges for the model can be specified in the same fashion as ModelRefractiveIndex. See also: ModelRefractiveIndex.

ModelIntensity

ModelIntensity[materialname] is a function evaluated by the ray-tracing engine at every ray/surface interface and is used for modeling the bulk absorptive properties of materials identified by materialname.
ModelIntensity may depend on various parameters including Intensity, WaveLength, OpticalLength, RefractiveIndex, and Temperature, and returns a single intensity value that is stored in the Intensity parameter of the ray. User-specified intensity model libraries of refractive materials can be created by listing and evaluating ModelIntensity[materialname] = intensityfunction for different specified materialnames. Intensityfunction is called with a ray and has the structure: Function[(rulenames inside formula)/.#]. The default intensityfunction for unspecified materialnames does not change the intensity of the ray. ModelIntensity may be based on spectroscopic data, and can be used to model gain (in lasers) as well as absorption. Before the user can define new ModelIntensity functions, they must first be unprotected or included in the "Models" directory of the Rayica package, behind the file "Models.nb". See also: ModelRefractiveIndex.

ModelJacobianMatrix

ModelJacobianMatrix[surfacelabel, value] is a global function that is used by ComponentFoundation to create the Jacobian matrix for component surfaces. ModelJacobianMatrix gives a Jacobian matrix function expression to JacobianMatrix in Component. The function must have the matrix explicitly as last element of the expression. If no pattern is defined for ModelJacobianMatrix, the matrix is given as the last two rows of the matrix given by ModelSurfaceNormal. See also: ModelSurfaceShape.

ModelPolarization

ModelPolarization[materialname] is a function evaluated by the ray-tracing engine at every ray/surface interface and is used for modeling the bulk polarizing properties of materials identified by materialname.
ModelPolarization may depend on various parameters including Intensity, WaveLength, OpticalLength, RefractiveIndex, and Temperature, and returns a single polarization value that is stored in the Polarization parameter of the ray. User-specified polarization model libraries of materials can be created by listing and evaluating ModelPolarization[materialname] = polarizationfunction for different specified materialnames. Polarizationfunction is called with a ray and has the structure: Function[(rulenames inside formula)/.#]. The default polarizationfunction for unspecified materialnames leaves Polarization unchanged. ModelPolarization could be used to implement an optically active material. Before the user can define new ModelPolarization functions, they must first be unprotected or included in the "Models" directory of the Rayica package, behind the file "Models.nb". See also: ModelRefractiveIndex, ModelIntensity.

ModelRayColor

ModelRayColor[rayparameterlabels, {minvalue, maxvalue}] = Function[parametervalue] attempts to convert the ray parameters indicated by rayparameterlabels into rendered color values.
Custom ray-rendering schemes can be defined for various ray-parameter labels by using ModelRayColor[rayparameterlabel, {min, max}] = Function[{parametervalue}, function[parametervalue]], where function[parametervalue] returns graphics styles such as Hue, GreyLevel, and RGBColor. ModelRayColor uses rayparameterlabel from the ColorView option of DrawSystem. Arguments minvalue and maxvalue are calculated based on the minimum and maximum parameter values from the currently displayed rays, selected by the RayChoice option. As a default for undefined ray parameter labels given by the ColorView option, ModelRayColor assigns a color Hue to each ray according to the segment parameter's numerical position between minvalue and maxvalue, with red assigned to the maximum encountered parameter value. Parameters made up of three elements are evaluated by representing each element independently with a red, green, or blue value. Two-element parameters are assigned a red and a green value, each representing an element. DrawSystem option ColorView -> WaveLength attempts to match the wavelength of the ray to the perceived visual color of that wavelength. The option ColorView -> Black may be used to produce black-rendered ray lines. Before the user can define new ModelRayColor functions, ModelRayColor must be unprotected or included within the "Models" directory of the Rayica package, behind the file "Models.nb". See also: ColorView, RayChoice, and RayLineRGB.

ModelRefractionTheory

ModelRefractionTheory[{refractiveindex, attenuationindex},{polarizationcalculations, directioncalculations}] returns the theory to be used in calculation. The theory is a list with two labels: the first is the general theory, the second designates the material character. For possible values see $Theory. The second list of ModelRefractionTheory is optional. See also: RefractiveIndex, AttenuationIndex, FresnelReflections, and DirectionCalculations.

ModelRefractiveIndex

ModelRefractiveIndex[materialname] is a ray-parameter-dependent function or list of rules that models the refractive properties of materials identified by materialname. If the properties depend only on the parameters WaveLength, Intensity, Polarization, Temperature, Tension, WaveTilt, SurfaceCoordinates, MaterialRotationMatrix, MaterialSpecification, SurfaceNormalMatrix, the model can be optimized in speed automatically.
In addition to the existing material models, user-specified model libraries of refractive materials can be created by listing and evaluating ModelRefractiveIndex[materialname] = indexfunction[...] for different material names. Note that the indexfunction can either be a user-specified function or the built-in IndexFunction resource. The CreateRefractiveIndexModel can be used in facilitating this process. Before the user can define new ModelRefractiveIndex functions, the ModelRefractiveIndex must first be unprotected or included within the "Models" directory of the Rayica package, behind the file "Models.nb ".


ModelRefractiveIndex may return a single function or a list of rules, designating the index functions for RefractiveIndex, AttenuationIndex, RelativePermeability, RelativePermittivity, Conductivity: {name1 -> indexfunction1[...], ...}. All, but RefractiveIndex are optional.

Allowed ranges for index functions can be given for WaveLength, Intensity, Temperature and Tension. For Wavelength, they are specified as ModelRefractiveIndex[materialname, WaveLength] = {minimumwavelength, maximumwavelength}. If ranges are specified, the whole number of ranges must be given: 18 for Tension, 2 for the rest. A medium specified by the IntrinsicMedium rule of a ray is not checked.
ModelRefractiveIndex[materialname, listofindexnames] returns a list of functions describing the material behavior, ModelRefractiveIndex[materialname, indexname] returns a function. An optional third parameter False uses default values for undefined indices.
See also: IndexFunction, CreateRefractiveIndexModel, ModelIntensity, ModelPolarization, and ModelCoating.

ModelSurfaceNormal

ModelSurfaceNormal[surfacelabel, value] is a global function that is used by ComponentFoundation to create the normal functions for component surfaces. ModelSurfaceNormal gives a normal surface function expression to SurfaceNormalFunction in Component. The function must have the matrix explicitly as last element of the expression.
For surfaces to be treated fully numerically, ModelSurfaceNormal[surfacelabel, aperture, surfacefunction] is used. In order to be usable in TurboTrace, the function should return an explicit three by three surface normal matrix. See also: ModelSurfaceShape.

ModelSurfaceRayIntersections

ModelSurfaceRayIntersections[surfacelabel, calculationmethod, surfacevalue] is used to model the intersection of a ray with a component surface.
ModelSurfaceRayIntersections returns either a single function or list of rules. SurfaceIntersectionFunction -> function designates a Function object that takes the ray start and tilt in local surface coordinates as a sequence of six values and returns a list of three-dimensional intersection points. In order to be compilable in TurboTrace, every symbol local to the function must be initialized and the intersection list can not be empty. Invalid intersections are returned as the symbol NoSurfaceIntersection that is transformed internally.
New intersections can be modelled by solving the three-dimensional equations line==surface for the x, y, and z components of the line. Rayica automatically rejects invalid intersections. For surfacelabel being OtherShape, surfacevalue is the surfacefunction. ModelRaySurfaceIntersections is called internally with an option Surface -> listofrules.
The parameter surfacelabel is a label for the surface type and is identical to that of ModelSurfaceShape. The calculationmethod is the label used as value of SurfaceRayIntersections.
If possible, SymbolicSurfaceRayIntersections uses definitions of ModelSurfaceRayIntersections[surfacelabel, Symbol].

ModelSurfaceShape

ModelSurfaceShape[surfacelabel, value] = surfacefunction is a global function that defines a surfacefunction with the surfacelabel as a reference tag.
Users can add new surface definitions by assigning new surfacefunctions to ModelSurfaceShape with surfacelabel that names the surface type. The value parameter can be a single number or list of numbers, and it specifies surface curvature characteristics. ModelSurfaceShape can either define a three-dimensional surface using a function of two parameters or a list of three parametric functions. New definitions may be assigned to ModelSurfaceShape by evaluating either ModelSurfaceShape[surfacelabel, value] = Function[{fx[s, t], fy[s, t], fz[s, t]}] for explicitly parametric surface functions or ModelSurfaceShape[surfacelabel, value] = Function[fx[s, t]] for simple surface functions. Before the user can define new ModelSurfaceShape functions, the ModelSurfaceShape must first be unprotected or included within the "Model Functions" section of the Rayica package. Internally, formal surface function parameters are renamed to corresponding Slot (#) expressions. See also: ModelSurfaceNormal.

ModifyElementsOptions

ModifyElementsOptions[functionname, functionparameters, options] is a utility function that creates a new optical component description.
ModifyElementsOptions is used within each new optical component definition and modifies the options of a component function to include a new ComponentDescription. This identifies the specified optical component with a special functionname (such as PlanoConvexLens) and functionparameters (such as {100,50,10}). This description is ultimately produced in the printed output cell for the component.

ModularSystem

ModularSystem -> True is an option of PropagateSystem that creates an optical system that can be used as a module together with other optics.
With the default, ModularSystem -> False, the last reported rays are not deflected at the last surface. To connect optical systems, the rays must be propagated behind the last surface. The last ray segments then get the rule LastSegment -> ModularSystem.

Move

Move[objectset, movement, options] is used to move the relative position and orientation of a set of components and rays.
Move accepts a number of patterns to specify a movement in one, two, or three-dimensional space. In particular, the movement can be specified as six different sequences of parameters: x; {x, y}; {x, y, z}; {x, y}, rotate; {x, y}, rotate, twist; {x, y, z}, rotationmatrix; {x, y, z}, tilt; and {x, y, z}, tilt, twist. Here, the rotation angle determines the angular orientation of objectset within the horizontal plane. To get a three dimensional movement, a three-dimensional tilt vector or rotation matrix is specified in addition to the three components of displacement, {x, y, z}. The optional twist angle, which may be given as an option TwistAngle -> #, can be used to specify a rotation around the axis of orientation (typically the optical axis).

A component or source may be moved additionally symbolically by specifying a list of a nonnumerical quantity and a number for each coordinate. Missing symbols are filled with the corresponding numerical specification, for example {{x, 10}, 5} to move symbolically {x, 5} and numerically {10, 5}.
Other related commands used for positioning components and rays include: Rotate, Translate, MoveSurface, MoveAligned, MoveDirected, MoveLinear, and MoveReflected.
Move -> {coordinatepoints} is an option of AnalyzeSystem/ShowSystem based on mouse-generated coordinatepoints that moves components and rays in the optical system.
Move uses a list of coordinatepoints taken with the mouse from the rendered graphics to specify a movement for the selected objects. The first coordinate point non pointing on an object indicates the point where to move objects. The next two points can specify an additional rotation. For one more point the objects are oriented parallel to the line defined by these two points. Two more points define a relative rotation, given by the lines from the first to the second and from the first to the third point. Object-sequence positions may also be used to specify objects instead of coordinatepoints. Move uses the two-dimensional coordinate system given in PlotType.
See also: DrawSystem, PlotType, ToleranceSelection, ToleranceDoubleClick, SnapGrid, SnapGridOffset, MoveReflected, Arrange, Rotate, Copy, Constrain, Snap, Align, Transform, Add, Swap, Remove, Identify.

Move3D

Move3D[objectset, {xpos, ypos, zpos}, tiltvector, twistangle, options] is used to move the relative position and orientation of a set of components and rays in three-dimensional space.
The functioning of Move3D has been fully taken over by Move in the current version of Rayica and, as such, Move3D is now obsolete. The tiltvector is a three-dimensional unit vector that points the direction of the axis of orientation. The twistangle specifies a rotation around the axis of orientation.
A component or source may be moved additionally symbolically by specifying a list of a nonnumerical quantity and a number for each coordinate. Missing symbols are filled with the corresponding numerical specification, for example {{x, 10}, 5, 7} to move symbolically {x, 5, 7} and numerically {10, 5, 7}.
Other related commands used for positioning components and rays include: Rotate, Translate, Move, MoveSurface, MoveAligned, MoveLinear, MoveDirected, and MoveReflected

MoveAligned

MoveAligned[chiefray, elementswithdistances] is used to specify the position and orientation of a list of component elements by tracing a chief ray through the system of elements.
MoveAligned is a function that generalizes MoveLinear. Instead of following a linear rail, MoveAligned follows an arbitrary light path through three-dimensional space, where the components and their spacings are alternately specified in elementswithdistances. MoveAligned places each component at a given spacing along the light path determined by the preceding component. MoveAligned invokes PropagateSystem internally to find the light path.
Other related commands used for positioning components and rays include: Rotate, Translate, MoveSurface, MoveLinear, Move, MoveDirected, and MoveReflected.

MoveDirected

MoveDirected[objectset, {xpos, ypos}, {xpoint, ypoint}, options] is used to move the relative position and orientation of a set of components and rays within a horizontal plane whose axis of orientation is defined by a line intersecting the object's position and a second defined point in the plane.

For three-dimensional placement, MoveDirected[objectset, {xpos, ypos, zpos}, {xpoint, ypoint, zpoint}, options] is used instead. The option TwistAngle -> # can be used to specify a rotation around the axis of orientation. The option SideOfObject is used to specify on which side of the object the second defined point is located. SideOfObject takes the values Before and After. Other related commands used for positioning components and rays include: Rotate, Translate, Move, MoveSurface, MoveAligned, MoveLinear, and MoveReflected.

MoveDirected3D

MoveDirected3D[objectset, {xpos, ypos, zpos}, {xpoint, ypoint, zpoint}, twistangle, options] is used to move the relative position and orientation of a set of components and rays in three-dimensional space, whose axis of orientation is defined by a line intersecting the object set's position and a second defined point in space.
The functioning of MoveDirected3D has been fully taken over by MoveDirected  in the current version of Rayica and, as such, MoveDirected3D is now obsolete. The twistangle specifies a rotation around the axis of orientation. The option SideOfObject is used to specify on which side of the object the second defined point is located. SideOfObject takes the values Before and After. Other related commands used for positioning components and rays include: Rotate, Translate, Move, MoveSurface, MoveAligned, MoveLinear, MoveDirected, and MoveReflected.

MoveGraphicalOutput

MoveGraphicalOutput is an option of all moving functions that controls the movement of graphics for components inside an OpticalSystem. It can be used with any move function. For False, the graphics is not moved with the system (the rendering is deleted), all other values move the graphics. The rendering for components of optical systems is also deleted for moving commands, which would result in wrong display of optical systems. Then a new propagation through the optical system is needed. See also: Move, PositionRelative, TiltRelative, TwistRelative, PositionGroup, TiltGroup, TwistGroup, Group.

MoveLabels

MoveLabels -> {oldposition1, newposition1, oldposition2, newposition2, ...} is an option of DrawSystem/AnalyzeSystem and ShowSystem that shifts the previously rendered positions of one or more of the labels.
MoveLabels uses a sequence of two or more screen coordinates where oldposition selects the relevent label and newposition indicates the new label position. See also: MoveRayLabels, ShowLabels, AddLabels, and RenameLabels.

MoveLinear

MoveLinear[objectset, {xstart, ystart}, lineposition, {xend, yend}, options] is used to move the relative position and orientation of a set of components and rays along a line specified by a starting point and ending point within the horizontal plane.
For three-dimensional placement, MoveLinear3D[objectset, {xstart, ystart, zstart}, lineposition, {xend, yend, zend}, twistangle, options] is used instead, where twistangle is an optional parameter. The returned set of objects is placed on the line at a distance of lineposition from the specified starting point. The option TwistAngle -> # can be used to specify a rotation around the axis of orientation. Other related commands used for positioning components and rays include: Rotate, Translate, Move, MoveSurface, MoveAligned, MoveDirected, and MoveReflected.

MoveLinear3D

MoveLinear3D[objectset, {xstart, ystart, zstart}, lineposition, {xend, yend, zend}, twistangle, options] is used to move the relative position and orientation of a set of components and rays along a line specified by a starting point and ending point in three-dimensional space.
The functioning of MoveLinear3D has been fully taken over by MoveLinear in the current version of Rayica and, as such, MoveLinear3D is now obsolete. The returned set of objects is placed on the line at a distance of lineposition from the specified starting point. The twistangle specifies a rotation around the axis of orientation. Other related commands used for positioning components and rays include: Rotate, Translate, MoveSurface, MoveAligned, MoveLinear, Move, MoveDirected, and MoveReflected.

MoveRayLabels

MoveRayLabels -> {oldposition1, newposition1, oldposition2, newposition2, ...} is an option of DrawSystem/AnalyzeSystem and ShowSystem that shifts the previously rendered positions of one or more of the ray labels.
MoveRayLabels uses a sequence of two or more screen coordinates where oldposition selects the relevent label and newposition indicates the new label position. See also: MoveLabels, ShowLabels, AddLabels, and RenameLabels.

MoveReflected

MoveReflected[objectset, {xbegin, ybegin},{xpos, ypos}, {xend, yend}, options] is used to move the relative position and orientation of a set of components and rays within a horizontal plane whose axis of orientation is defined by a line intersecting the object set's position and bisecting a starting point and ending point in the plane.
For three-dimensional placement, MoveReflected3D[objectset, {xbegin, ybegin, zbegin},{xpos, ypos, zpos},{xend, yend, zend}, twistangle, options] is used instead, where twistangle is an optional parameter. The option TwistAngle -> # can be used to specify a rotation around the axis of orientation. Other related commands used for positioning components and rays include: Rotate, Translate, Move, MoveSurface, MoveAligned, MoveLinear, and MoveDirected.
MoveReflected -> {coordinatepoints} is an option of AnalyzeSystem/ShowSystem based on mouse-generated coordinatepoints that moves components and rays in the optical system.
MoveReflected uses a list of coordinatepoints taken with the mouse from the rendered graphics to specify a movement for the selected objects. The first coordinate point non pointing on an object indicates the point where to move objects. The next two points are used for defining two optical axes originating at the moved object. Any missing point is filled with the position of the object after and before the moved object in the object sequence. The moved object is oriented to the bisecting of the two optical axes. This is the orientation a mirror must have to reflect a ray along the first optical axis along the second one. Object-sequence positions may also be used to specify objects instead of coordinatepoints. MoveReflected uses the two-dimensional coordinate system given in PlotType.
See also: DrawSystem, PlotType, ToleranceSelection, ToleranceDoubleClick, SnapGrid, SnapGridOffset, Move, Arrange, Rotate, Copy, Constrain, Snap, Align, Transform, Add, Swap, Remove, Identify.

MoveReflected3D

MoveReflected3D[objectset, {xbegin, ybegin, zbegin},{xpos, ypos, zpos},{xend, yend, zend}, twistangle, options] is used to move the relative position and orientation of a set of components and rays in three-dimensional space, whose axis of orientation is defined by a line intersecting the object set's position and bisecting a starting point and ending point in space.
The functioning of MoveReflected3D has been fully taken over by MoveReflected in the current version of Rayica and, as such, MoveReflected3D is now obsolete. The twistangle specifies a rotation around the axis of orientation. Other related commands used for positioning components and rays include: Rotate, Translate, Move, MoveSurface, MoveAligned, MoveLinear, MoveDirected, and MoveReflected.

MoveRelative

MoveRelative is an option of all Move functions that controls the movements of objects. For False, the objects are moved independent of their orientations. This is the default for all move commands. For True, the object is moved in a coordinate system, defined by its own location and orientation, i. e. its TranslationVector and RotationMatrix. For ray sources this information is taken from SourceTransformation, a Ray uses RayStart instead of TranslationVector.
The first movement is not affected by this option, because the object is at the origin of the global coordinate system. See also: Move, MoveDirected, MoveReflected, and MoveLinear.

MoveSurface

MoveSurface[components, surfacenumbers, moveparameters, options] is used to move the local position and orientation of one or more of surfaces, specified by surfacenumbers, within one or more optical components.
Here, moveparameters accepts a sequence of movement parameters used by either Move, Rotate, or Translate according to the Head option. For example, if Head->Move is specified, then, as one possible pattern, moveparameters would accept: {x,y}, angle. MoveSurface operates in the local coordinate system of each surface. If more than one surface is indicated by surfacenumbers, then each surface shall be treated in an identical fashion according to its local coordinate system. If more than one component is present, then the surfaces indicated by surfacenumbers within each component shall be affected. If a particular component does not have a sufficient number of surfaces, it is left unaffected by MoveSurface.
Other related commands used for positioning components and rays include: Rotate, Translate, MoveAligned, MoveLinear, Move, MoveDirected, and MoveReflected.

MultipleCreatedRays

MultipleCreatedRays -> True/False/numberofrays specifies how many rays are generated at an optical surface by a deflection function.


MultipleCreatedRays is only used in TurboTrace calculations, but is not used by PropagateSystem. In this instance, True would indicate that more than one ray is created at the surface by the deflection function, while False would indicate that a single ray is generated.  Otherwise, a numeric numberofrays value can be specified if the precise number of generated rays is known.

NA

NA is a database rule name that indicates the numerical aperture of a lens system.
The numerical aperture is defined as the index of refraction (of the image medium) times the sine of the half angle of the cone of illumination. The NA by also be approximated by 0.5/f-number of the system. See also: FNumber.

NewAuthorizedOptions

NewAuthorizedOptions is a rule of Ray that gives a list of Ray option names authorized in addition to the names listed in Options[Ray] for propagating several generations.
Ray parameter names may be added or removed from NewAuthorizedOptions by a surface ray-tracing function. Unauthorized ray parameters (labels not listed in NewAuthorizedOptions or in Options[Ray]) are allowed to propagate to the next ray/surface interaction before removal. Note that every Ray object may have its own unique list of new authorized parameters. In general, these lists will not be the same.

NewRay

NewRay is a value of AddTo and ReplaceFor and designates that newly created Ray objects are returned from DeflectionFunction.
If specified in AddTo, NewRay creates a new set of one or more Ray objects. NewRay can only be given as an output object. Inputs from previous NewRay objects are given by CreatedRay and AllCreatedRays. See also: ChangedRay, CreatedRay, OriginalRay, AddTo, and TakeFrom.

NewSCx

NewSCx is a symbol that denotes the first of the parametric surface coordinates.

NewSCy

NewSCy is a symbol that specifies the second of the parametric surface coordinates.

NewSources

NewSources -> newsources is an option of TurboTrace that lists new sources for a TurboSystem object.
NewSources replaces all the sources in the object. This option may reduce calculation time considerably, because TurboTrace can recycle most of the optical system.

NextValue

NextValue is an option of FindFocus that gives a follow-up number to help FindRoot begin its search.

NoCoating

NoCoating designates that no coating is present.

NoSurfaceIntersection

NoSurfaceIntersection is a placeholder that designates an invalid intersection.

It is used in HeldTraceKernel to avoid empty tensors.

NotFirstSlot

NotFirstSlot is a value of AffectedSurfaces and designates that all but the first slot position within each confined path in ConfinedPaths inherits the new ray-tracing function trait.
In general, ray-tracing function traits are added to a surface by appending the ray-tracing function position (within Deflections) to the affected DeflectionNumber value within ConfinedPaths.
See also: AllDeflections, AllSurfaces, FirstSlot, LastSlot, NotLastSlot, AffectedSurfaces, and IndependentSurfaces.

NotLastSlot

NotLastSlot is a value of AffectedSurfaces and denotes that all but the last slot position within each confined path in ConfinedPaths inherits the new ray-tracing function trait.
In general, ray-tracing function traits are added to a surface by appending the ray-tracing function position (within Deflections) to the affected DeflectionNumber value within ConfinedPaths.
See also: AllDeflections, AllSurfaces, FirstSlot, LastSlot, NotLastSlot, AffectedSurfaces, and IndependentSurfaces.

NumberElements

NumberElements is a database rule name that indicates the number of lens elements present in the compound lens system.

NumberLength

NumberLength -> integer is an option of RecoverInput that controls the string length of numbers produced by RecoverInput.

NumberOfCycles

NumberOfCycles returns the total number of ray-trace function calls made by OptimizeSystem to obtain the minimized result.
See also: OptimizeSystem.

NumberOfElementGroups

NumberOfElementGroups is a database rule name that indicates the number of lens element groups present in the compound lens system.

NumberOfRays

NumberOfRays is an option of ray sources that designates the number of rays to be initially created by a ray source function. See also: MonteCarlo.

NumberOfSurfaces

NumberOfSurfaces is a database rule name that specifies the total number of surfaces present in a lens system.

Numeric

Numeric is a value of the SurfaceNormalFunction, SurfaceNormalCalculations, and SurfaceRayIntersections, that designates that a direct numerical calculation is used for determining surface normals and ray-intersection coordinates.

NumericJacobianFunction

NumericJacobianFunction[function] is used to designate a function that calculates Jacobian of a surface.
NumericJacobianFunction replaces the Function head and is always used in connection with the JacobianMatrix rule embedded within the Surfaces rule of a component. The principle advantage of NumericJacobianFunction is that it hides the contents of the function from normal view. See also: NumericSurfaceNormalFunction.

NumericSurfaceNormalFunction

NumericSurfaceNormalFunction[compiledfunction] is used to designate a compiled function that calculates surface normal.
NumericSurfaceNormalFunction replaces the CompiledFunction head and is always used in connection with the SurfaceNormalFunction rule embedded within the Surfaces rule of a component. The principle advantage of NumericSurfaceNormalFunction is that it hides the contents of the function from normal view. SurfaceNormalFunction is used as a wrapper instead of Function when numeric surface normal function is not compiled. See also: SurfaceNormalFunction and NumericJacobianFunction.

OffAxis

OffAxis -> {xoffset, yoffset} is an option that specifies an offset of the axis of symmetry for curved surfaces.

Offx

Offx is used with LabelPositions to indicate an offset value.

Offy

Offy is used with LabelPositions to indicate an offset value.

Offz

Offz is used with LabelPositions to indicate an offset value.

OpenSide

OpenSide is an option of CylinderGraphic that allows for an opening to be formed in the Cylinder shell.
OpenSide takes a list of two numbers, OpenSide -> {anglestart,anglestop}, given in radians. OpenSide -> False indicates a closed cylinder.

OpticalLength

OpticalLength is a rule of Ray that gives the total optical path length of the ray from the beginning of its creation up to a particular surface.

OpticalMedium

OpticalMedium is a rule of Ray that identifies the optical material medium traversed by each ray segment.
The value of OpticalMedium is typically used by ModelRefractiveIndex for selecting a refractive index model. See also: ComponentMedium, IntrinsicMedium, and RefractiveIndex.

OpticalSystem

OpticalSystem[{listofrays}, {listofsources}, {listofcomponents}, GraphicalOutput[...], Options->opts] is an object containing an ordered listing of Ray objects, Component objects, and GraphicalOutput.
OpticalSystem doubles as a value of OutputType.

OpticalSystemQ

OpticalSystemQ[x] tests whether x is an OpticalSystem object. The result is True or False.

OptimizeSystem

OptimizeSystem[system, options] optimizes the performance of an optical system for a specified set of input parameters.
OptimizeSystem first calls ConstructMeritFunction to create a RayTraceFunction according to the MeritType option setting and then calls a minimization algorithm according to the MinimizationType option. MeritType is internally converted into particular settings for the ReportedParameter and ReportedFunction options. As an alternative to using the MeritType option, the user can instead work directly with the ReportedParameters and ReportedFunction options. In addition to accepting an optical system of light sources and components, one or more previously calculated results from ConstructMeritFunction may be directly passed to OptimizeSystem. If more than one ConstructMeritFunction result is passed, OptimizeSystem uses the combined merit results to perform the minimization.
See also: ConstructMeritFunction, MeritType, MinimizationType, TurboTrace, and RayTraceFunction.

OriginalRay

OriginalRay is a value of TakeFrom and denotes that the original incoming Ray object is passed to DeflectionFunction.
OriginalRay can also be used with AddTo and ReplaceFor, but only in rare instances. Normally ChangedRay is used with AddTo and ReplaceFor instead. OriginalRay contains the original Ray object parameters of the ray incident on the surface from the previous generation. See also: NewRay, CreatedRay, ChangedRay, AddTo, and TakeFrom.

OriginalSurfaceNormalFunction

OriginalSurfaceNormalFunction is a rule embedded within Surfaces of Component that describes the normals of the surface functions.
OriginalSurfaceNormalFunction is present when the SurfaceNormalFunction has been modified by the AddSurfaceRoughness function and holds the surface-normal information originally given for the surface.

OtherDeflections

OtherDeflections -> data is a rule within TurboSurfaces that specifies the data used in TurboTrace to execute an external call to calculate ray deflections.

OtherShape

OtherShape is a value of SurfaceLabel within Component that designates that the SurfaceFunction is something other than planar, spherical, parabolic, or cylindrical.

OtherSymmetry

OtherSymmetry implies that the symmetry of the object cannot be specified in advance.
FresnelSymmetry->OtherSymmetry also makes SagFit->True. See FresnelSymmetry.

Output

Output is a value of the Print option in RecoverInput.
See RecoverInput.

OutputGraphics

OutputGraphics is a rule returned by a function that holds the plot information in the function output.
OutputGraphics is used by several built-in functions of Rayica.

OutputType

OutputType is an option of many Rayica functions that is used to indicate the final output format of the function evaluation.
However, the allowed settings of OutputType can change for different parent functions. With the AnalyzeSystem, DrawSystem, and ShowSystem functions, there are two common OutputType modes: OpticalSystem and StandardGraphics. If the OutputType -> StandardGraphics mode is indicated, then a graphics object in the standard Graphics or Graphics3D format of Mathematica is returned. The default OutputType -> OpticalSystem mode returns the optical component and ray-trace information, as an OpticalSystem object, that can be analyzed and manipulated by the functions of Rayica.
OutputType is also an option of TurboTrace and TurboPlot to denote the format of the ray-tracing output. With OutputType -> Automatic or OutputType -> TurboSystem and both a light source and one or more optical elements being present, TurboTrace and TurboPlot both constructs and executes a compiled ray trace that is encapsulated in the TurboSystem object. However, with TurboTrace and OutputType -> RayTraceFunction, the result is compiled and returned without execution as a RayTraceFunction object. In addition, TurboPlot also uses the OutputType -> StandardGraphics as previously described. Finally, a few advanced built-in functions call TurboTrace with the OutputType -> TurboSurfaces setting. In this case, TurboTrace returns a TurboSurfaces object (without compiling a RayTraceFunction).
See also: TurboTrace.

OutsideMedium

OutsideMedium is an option of Pipe and Box that sets the value of IntrinsicMedium used outside Pipe and Box.

PAN

PAN specifies the use of the polyacrylonitrile polymer medium.
The refractive index model for PAN is most suitable for the wavelength range of .46 microns to 1.06 microns.

ParabolicDiffuser

ParabolicDiffuser[focus, scatteringparameter, aperture, label, options] and ParabolicDiffuser[focus, scatteringparameter, aperture, thickness, label, options] denote a parabolic, diffusing, component that splits incoming rays into diffused rays rays after an optical surface using the ray scattering distribution pattern given in scatteringparameter.
The scatteringparameter can either be light source function or a listing of one or more angles that describe the scattering behavior. If a light source function is specified, then the ScatterRays function is called internally. An example of a light-source scatteringparameter is WedgeOfRays[90, NumberOfRays->1, MonteCarlo -> True]. Otherwise, if a single number or a list of numeric scatter angles are passed in the scatteringparameter, then AddRandomRayTilt is called instead. Three examples of this are: 90, {90,90}, and {{-45,45},{-45,45}}.
The thickness refers to the refractive substrate of the diffuser. If no thickness value is given, the component is a single-sided diffuser. ParabolicDiffuser weights the scattered ray Intensity values according to seed ray Intensity values. For Lambertian->True, the scattered rays are oriented about the surface normal. For Lambertian->False, the scattered rays are oriented with the incoming ray direction.  The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: ScatterRays, AddRandomRayTilt, Diffuser, DiffuserMirror, CustomDiffuser, and CustomDiffuserMirror.

ParabolicDiffuserMirror

ParabolicDiffuserMirror[focus, scatteringparameter, aperture, label, options] and ParabolicDiffuserMirror[focus, scatteringparameter, aperture, thickness, label, options] denote a parabolic, diffusing, reflective, component that splits incoming rays into diffused rays reflected rays after an optical surface using the ray scattering distribution pattern given in scatteringparameter.
The scatteringparameter can either be light source function or a listing of one or more angles that describe the scattering behavior. If a light source function is specified, then the ScatterRays function is called internally. An example of a light-source scatteringparameter is WedgeOfRays[90, NumberOfRays->1, MonteCarlo -> True]. Otherwise, if a single number or a list of numeric scatter angles are passed in the scatteringparameter, then AddRandomRayTilt is called instead. Three examples of this are: 90, {90,90}, and {{-45,45},{-45,45}}.
The thickness refers to the refractive substrate of the diffuser. If no thickness value is given, the component is a single-sided diffuser.
ParabolicDiffuserMirror weights the scattered ray Intensity values according to seed ray Intensity values. For Lambertian->True, the scattered rays are oriented about the surface normal. For Lambertian->False, the scattered rays are oriented with the incoming ray direction. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: ScatterRays, AddRandomRayTilt, Diffuser, DiffuserMirror, CustomDiffuser, and CustomDiffuserMirror.

ParabolicLensSurface

ParabolicLensSurface[focus, aperture, label, options] designates a parabolic component that models the refractive index boundary at a lens surface.
The focus specifies a curvature that a reflective parabolic surface must have to get this focal length. ParabolicLensSurface is always used in combination with one or more additional LensSurface component types to create a complete lens object. ParabolicLensSurface is created with its surface centered about the origin. The aperture parameter may specify a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.
See also: SurfaceFacet, LensSurface, ParabolicLensSurface, CylindricalLensSurface, ParabolicLensSurface, and CustomLensSurface.

ParabolicMirror

ParabolicMirror[focallength, aperture, label, options] and ParabolicMirror[focallength, aperture, thickness, label, options] designate a mirror that has a parabolic reflective side.
The thickness refers to the refractive substrate of the mirror. If no thickness value is given, the component is a single-sided mirror. ParabolicMirror is created with its first surface centered about the origin and its second surface positioned down the positive x axis. The aperture parameter may denote a circle, rectangle, or polygon depending on the number and type of elements listed by it. FlatSubstrate -> True creates the mirror on a flat-backed substrate. Hole -> holeaperture creates hole in the mirror. Depending on the InputEdgeThickness option setting, the thickness parameter may denote either the small edge thickness or the center thickness of the component. With InputEdgeThickness->True, the thickness parameter is taken for the maximum edge thickness. The Centered option can be used to change substrate rear surface position in off-axis parabolic mirrors. For Centered -> True indicates that the substrate rear surface is located directly behind and parallel with the local off-axis mirror surface. With Centered -> True only InputEdgeThickness -> True is recognized. For Centered -> False, the substrate orientation remains fixed with the y-z plane and parallel with the parabolic vertex. In addition, Centered -> False changes the specified aperture is taken for the projected boundary shape onto the y-z plane (as seen from projection down the primary optical (x) axis). For Centered -> True, the specified aperture is taken as the actual boundary shape of the off-axis surface (as seen by projection down the local surface normal). The Centered -> Automatic option automatically changes its value to fit best with other options settings of ParabolicMirror.
The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.
See also: ParabolicMirror, InputEdgeThickness, Hole, FrontSurface, and FlatSubstrate.

ParabolicMirrorWithHole

ParabolicMirrorWithHole is obsolete. Use ParabolicMirror with the Hole -> holeaperture option instead.

ParabolicShape

ParabolicShape is a value of SurfaceLabel within Component that indicates the parabolic SurfaceFunction.

PartialDispersionRatio

PartialDispersionRatio is a rule name that specifies the partial dispersion ratio, Pdc = (nd-nc) / (nf-nc), and represents the second order chromatic aberration contribution of an optical material.
Here, nf, nd, and nc are the refractive index values for three different wavelengths specified by the SpectralRegion option. See also: FindGlassNumbers, SpectralRegion, GlassCodeFunction, GlassMap, MeanDispersion, GlassCodeNumber, and AbbeVNumber.

PavilionAngle

PavilionAngle is an option of the Solitaire prism that indicates the angle (in degrees) that the Pavilion facet makes with respect to the girdle waist. Note that PavilionAngle, PavilionDepth, and CuletAngle are all complementary ways of defining the facet dimensions on the pavilion (below the girdle).
Specialized options of the Solitaire prism include: TableDiameter, GirdleThickness, CrownAngle, PavilionAngle, StarDiameter, BackFacetDiameter, CrownHeight, PavilionDepth, CuletAngle, and CuletDiameter.

PavilionDepth

PavilionDepth is an option of the Solitaire prism that specifies the vertical distance from the girdle waist to the bottom vertex of the culet as a percentage of the overall Solitaire diameter. Note that PavilionDepth, PavilionAngle, and CuletAngle are all complementary ways of defining the facet dimensions on the pavilion (below the girdle).
Specialized options of the Solitaire prism include: TableDiameter, GirdleThickness, CrownAngle, PavilionAngle, StarDiameter, BackFacetDiameter, CrownHeight, PavilionDepth, CuletAngle, and CuletDiameter.

PechanPrism

PechanPrism[smallentranceside, label, options] refers to an image erecting prism that does not deviate or displace an image but can be used to invert or revert an image.
PechanPrism performs the same function as the DovePrism, but it also works with converging and diverging beams. PechanPrism is located with its small entrance face centered in the y-z plane and its rotation axis aligned with the x-axis. Two surfaces of PechanPrism are reflective-coated. PechanPrism uses the option SurfaceSeparation to denote the airspace between the two prism halves. SurfaceSeparation -> relativevector gives a relative vector factor that gets multiplied by smallentranceside to determine the airspaced offset for the prism interface. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: DovePrism, ReversionPrism, WedgePrism, RhomboidPrism, RoofPrism, and Prism.

PellinBrocaPrism

PellinBrocaPrism[alpha, Bside, Aside, beta, thickness, label, options] refers to a six-sided prism having polygon dimensions on two sides and rectangular dimensions on the remaining sides.
PellinBrocaPrism is initially generated with the alpha corner vertex placed at the origin of the global coordinate system and with the large polygon prism faces lieing in the horizontal x-y plane direction. The Bside is initially generated to touch the x-axis. The PellinBrocaPrism is primarily used in wavelength dispersion and beam separation applications. For normal operation, the alpha angle is set at 60 degrees and the beta angle is roughly between 75 and 80 degrees. Typical values for the remaining parameters are: Aside = 24 mm, Bside = 40 mm, and thickness = 10 mm. The beam entrance can be on either the Aside or Bside at roughly the Brewster angle of incidence and depending on which side is chosen, the result will have either positive or negative dispersion. The resulting output beams leave the prism at roughly the Brewster angle and approximately 90 degrees to the input beam. One can orient PellinBrocaPrism such that the degree of deflection is exactly 90 for one desired wavelength. (Notes by Alex Angerhofer, Dept of Chemistry, University of Florida) The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: Prism and RhomboidPrism.

PentaPrism

PentaPrism[entranceheight, label, options] refers to a prism having and five rectangular faces and two pentagon faces.
PentaPrism[entranceheight, prismthickness, options] is another pattern for PentaPrism. PentaPrism is located with its entrance face centered in the y-z plane and its polygon faces laying in the horizontal x-y plane direction. PentaPrism is commonly used to deviate a beam by exactly 90 degrees. Two surfaces of PentaPrism are always reflective-coated. A third, middle surface is also reflective-coated with the Mirrored -> True option. Baffled -> True makes the two pentagon surfaces absorptive. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: DovePrism, WedgePrism, RhomboidPrism, RoofPrism, and Prism.

PhaseAngle

PhaseAngle is an option of FieldOfRays that specifies a phase angle or a range of phase angles. See also: FieldOfRays.

PhaseMismatch

PhaseMismatch is an unauthorized rule of ray that denotes the phase mismatch in radians of a diffracted wave. It is not normalized.
See also: Diffraction, Grating.

PhaseRetardation

PhaseRetardation[component, wavedifference, axisangle, options] is a generic building block that uses retards the phase of polarized rays in order to rotate their polarization state.
The wavedifference parameter, given in wavelength fractions, determines the amount of phase delay between two polarization states. The axisangle parameter, given in Degrees, determines the direction of the first polarization state along the optical surface with respect to the horizontal axis of the local surface coordinate system. The Transmission -> transmissionvalue option can be used to weight the outgoing intensity of each outgoing ray, where transmissionvalue can be either a number between 0 and 100, a list of {wavelength, transmission} values, or a Function-headed expression that depends on ray options such as WaveLength. Otherwise, ModelIntensity[componentmedium] = {transmissionvalue} can be defined to hold an absorption function or a list of {wavelength, transmission} values. See also: Polarization, RetardationPlate, LinearPolarization, and JonesMatrix.

PhaseTilt

PhaseTilt is a rule of Ray that is a three-dimensional coordinate that designates the direction in which the real phase of the ray segment is pointing in space. For dielectrics it is the same as RayTilt. The option is unauthorized and not part of Options[Ray].

PhosphateResistance

PhosphateResistance is a database rule name that specifies the phosphate resistance of a material.

PinHole

PinHole[aperture, holeaperture, label, options] and PinHole[aperture, holeaperture, thickness, label, options] denotes a planar component with a hole created in its middle.
PinHole is created with its first surface centered about the origin. The aperture and holeaperture arguments may denote a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

Pipe

Pipe[outerdiameter, wallthickness, height, label, options] designates a cylindrical pipe that has a given diameter and wall thickness that models the optical properties of a transparent, thick-walled cylinder.
Pipe may be filled with an index medium other than Air by having the interior intrinsic index of refraction given by the option InsideMedium. The refractive index of the pipe walls is given by the ComponentMedium option. Pipe is created with its center located at the origin and its length (height) oriented vertically.  The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics. See also Box.

PlanarShape

PlanarShape is a value of SurfaceLabel within Component that designates a planar SurfaceFunction.

PlanoConcaveCylindricalLens

PlanoConcaveCylindricalLens[focallength, aperture, thickness, label, options] indicates a lens with a planar surface on one side and a concave cylindrical surface on the other side.
PlanoConcaveCylindricalLens is created with its first surface centered about the origin and its second surface positioned down the positive x axis. The aperture parameter may designate a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.
Note that the specified focallength is always determined for a particular setting of the DesignWaveLength and ComponentMedium options. By default, Rayica uses DesignWaveLength->0.5461 microns and ComponentMedium->BK7. Care should be taken to insure that these default settings are compatible with the intended experimental design or unintended results can occur.

PlanoConcaveLens

PlanoConcaveLens[focallength, aperture, thickness, label, options] denotes a lens with a planar surface on one side and a concave spherical surface on the other side.
PlanoConcaveLens is created with its first surface centered about the origin and its second surface positioned down the positive x axis. The aperture parameter may indicate a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.
Note that the specified focallength is always determined for a particular setting of the DesignWaveLength and ComponentMedium options. By default, Rayica uses DesignWaveLength->0.5461 microns and ComponentMedium->BK7. Care should be taken to insure that these default settings are compatible with the intended experimental design or unintended results can occur.

PlanoConvexCylindricalLens

PlanoConvexCylindricalLens[focallength, aperture, thickness, label, options] denotes a lens with a planar surface on one side and a convex cylindrical surface on the other side.
PlanoConvexCylindricalLens is created with its first surface centered about the origin and its second surface positioned down the positive x axis. The aperture parameter may indicate a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.
Note that the specified focallength is always determined for a particular setting of the DesignWaveLength and ComponentMedium options. By default, Rayica uses DesignWaveLength->0.5461 microns and ComponentMedium->BK7. Care should be taken to insure that these default settings are compatible with the intended experimental design or unintended results can occur.

PlanoConvexLens

PlanoConvexLens[focallength, aperture, thickness, label, options] denotes a lens with a planar surface on one side and a convex spherical surface on the other side.
PlanoConvexLens is created with its first surface centered about the origin and its second surface positioned down the positive x axis. The aperture parameter may designate a circle, rectangle, or polygon depending on the number and type of elements listed by it. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.
Note that the specified focallength is always determined for a particular setting of the DesignWaveLength and ComponentMedium options. By default, Rayica uses DesignWaveLength->0.5461 microns and ComponentMedium->BK7. Care should be taken to insure that these default settings are compatible with the intended experimental design or unintended results can occur.

Plot2D

Plot2D is an option that indicates whether the plotted information is given in two-dimensions or three-dimensions for three-dimensional ray-trace data sets.
Plot2D->True or Plot2D->SideView specifies a two-dimensional plot taken along the x-axis of the data. Plot2D->FrontView specifies a two-dimensional plot taken along the y-axis of the data. Plot2D->False is used to specify a full three-dimensional plot of three-dimensional data and in some functions and a DensityPlot in other functions. Finally, Plot2D->ContourPlot is used to specify a contour plot of three-dimensional data in some functions. Note that if three-dimensional data is not available for the chosen ray-trace data then only a two-dimensional plot will be given.

PlotDomain

PlotDomain->{{xmin,xmax},{ymin,ymax}} is an option that gives the surface plot boundary dimensions at a designated surface.
PlotDomain->{xmin,xmax} is used for one-dimensional traces. (Technical note: PlotDomain is essentially a design fix to the flawed, built-in PlotRegion option of Mathematica, since PlotRegion does not accept a simple plot-domain specification.)

PlotFactor

PlotFactor -> {widthscale, heightscale} is an option of ComponentRendering and a rule embedded within Component that independently scales the plot resolution of the graphics rendering for the width and height of surfaces.

PlotType

PlotType is an option of DrawSystem/AnalyzeSystem, TurboPlot, and ShowSystem that designates the display form of the graphics rendering.
PlotType takes TopView, FrontView, SideView, Full3D, RealTime3D, Off, Surface, and ShadowProject as values.
A list of one or two points specify a direction and center to project the graphics. The points can be specified as rules RaySelect -> sel, ComponentSelect -> sel and SurfaceSelect -> sel, with sel being a list of selection properties passed to the designated functions. See also: CreateStereoView and ProjectGraphics3D.

PMMA

PMMA designates the use of the poly(methyl methacrylate) polymer medium.
The refractive index model for PMMA is most suitable for the wavelength range of .46 microns to 1.06 microns.

PointOfRays

PointOfRays[seed, spread, options] initializes a set of rays distributed within a funnel-shaped volume that is oriented down the positive x-axis for the default BirthPoint setting.

The spread parameter is taken as the full cone angle, in degrees units, for the default BirthPoint setting of Automatic. However, for other BirthPoint settings, the spread parameter specifies the intercept spatial dimensions, at the y-z plane, of the ray set. If spread is a list of two positive numbers {width, height}, then PointOfRays forms a rectangular grid of dimensions {width, height}. If the spread is a single number, then PointOfRays forms a circular grid of rays that has a diameter dictated by the spread. If the spread is a list of two negative numbers {-width, -height}, then PointOfRays forms an elliptical grid of elliptical dimensions {width, height}.

The number of rays in each of the grid dimensions is given in the option NumberOfRays. NumberOfRays may also point to a list of two numbers {rays1, rays2} for each direction of the grid of starting points. For circular and elliptical shapes the total number of rays is (rays1-1)*rays2+1 to get a single ray at the center.

The seed parameter is optional and is used to generate more elaborate ray patterns. When it is present, it specifies additional light sources to be nested with the basic PointOfRays result. When PropagateSystem is used for the ray trace, PointOfRays produces a set of Ray objects. However, with TurboTrace calculations, a TurboRays object is generated from PointOfRays instead. The distribution of rays is controlled by the GridSpacing option and the starting origin is defined by the BirthPoint option.

See also: NumberOfRays, MonteCarlo, GridSpacing, SourceFraction, SourceOffset, BirthPoint, SingleRay, CircleOfRays, ConeOfRays, WedgeOfRays, LineOfRays, GridOfRays, CustomRays, FieldOfRays, GaussianBeam, and RainbowOfRays.

PoissonRatio

PoissonRatio is a database rule name that specifies the Poisson's Ratio of a material, a dimensionless number.

PolarCoordinates

PolarCoordinates is a value of the option CoordinateSystem.

The three coordinates are radius, angle in x-y plane, angle in x-z plane. The radius may also take the value Infinity for LineOfRays, CircleOfRays, and GridOfRays.

Polarization

Polarization -> {horizontal, vertical, phaseangle} is a rule of Ray that specifies the direction of polarization of the ray segment. It is measured in the plane transverse to the axis of propagation.
In general, horizontal, vertical, and phaseangle are real numbers, with phaseangle indicating a phase difference between the two transverse directions of polarization. The absolute directions of polarization are given by the second and third vector elements listed in the RotationMatrix ray parameter. Polarization, Intensity, RayTilt, and RotationMatrix are all related parameters. Note that Polarization is a field quantity, while Intensity is an energy quantity.

PolarizationFunction

PolarizationFunction -> f is an option of most sources that specifies a function to calculate polarizations. The arguments to f are the Polarization, RayTilt, RayEnd, and RaySourceNumber. The evaluation of f[symbols] must be a compilable expression, which returns an intensity value. E. g. a constant projection of the horizontal polarization 0.8 can be modelled with WedgeOfRays[10, Polarization -> {0.8, 0.6, 0}, PolarizationFunction -> Function[{ #1[[1]]/Dot[#2,{1,0,0}], Sqrt[1-(#1[[1]]/Dot[#2,{1,0,0}])^2], #1[[3]] }] ].
See also: IntensityFunction.

PolarizingBeamSplitterCube

PolarizingBeamSplitterCube[side, label, options] refers to a solid cube beam splitter that has a polarization reflective surface across its diagonal.
BeamSplitter is created with one face centered about the origin and the opposite face positioned down the positive x axis. The side parameter specifies the edge dimension of a cube. Baffled -> True is used to create absorbing surfaces at the top of the bottom of the cube. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: BeamSplitter, WedgeBeamSplitter, and ConjugateBeamSplitter.

PolarizingPrism

PolarizingPrism[interfaceangle, axisangle, aperturethickness, prismlength, label, options] refers to a cubical-shaped birefringent prism that has two or three internal interfaces and rectangular dimensions on the outside.
PolarizingPrism is located with its first entrance face centered in the y-z plane. PolarizingPrism uses the option SurfaceSeparation to denote an additional space between the joining prism elements. SurfaceSeparation -> horizontalgap gives the absolute horizontal spacing of the prism interface. The angle of the interface, given by interfaceangle, is measured from the first entrance surface of the prism.
PolarizingPrism assumes that a single type of birefringent and isotropic material is used throughout the prism construction. PolarizingPrism uses the option ComponentMedium -> {{mediumO, mediumE}, isotropicmedium} to designate the ordinary and extraordinary refractive index of the birefringent material of the prism elements that has an isotropic refractive index in the interface between the different prism elements. Otherwise, the option ComponentMedium -> {isotropicmedium, {mediumO, mediumE}} is used to denote an isotropic index material for the prism elements with a birefringent interface between the prism elements. Finally, ComponentMedium -> {mediumO, mediumE} can be used to indicate air-spaced birefringent prism elements (the air-space is automatically given by IntrinsicMedium).
PolarizingPrism uses the option FullForm to indicate whether there exists one or two distinct internal interfaces that connect either two or three corresponding prism elements. The default FullForm -> False creates a single interface with two connecting pieces. With FullForm -> True, three prism elements are created, and the third element always takes the mirror-image shape of the first crystal in the prism-element sequence.
The birefringent axis alignment is given by axisangle. The axisangle parameter indicates the birefringent alignment relative to the horizontal (y-axis) of the first prism surface (along the optical axis). If a single value is given for axisangle, the following crystal pieces are assumed to have their birefringent axes rotated by 90 degrees, consecutively. Otherwise, two values for axisangle may be given, and in this way, the birefringent axis may be directly specified for the first and second prism elements. If three pieces of crystals are used (i.e. FullForm -> True), the third prism element retains the same axisangle as the first prism element.
Lastly, the BeamSplitter -> True option is used to specify a second exit face to the prism assembly. This additional face is used to guide the critically reflected beam out of the prism. PolarizingPrism can be used to define many types of polarizing prisms such as Wollaston, Glan-TaylorPrism, and Glan-Thompson. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: BirefringentLensSurface, FresnelRhom, LinearPolarizer, RetardationPlate, JonesMatrixOptic, and CustomBirefringentLensSurface.

PolygonalMirror

PolygonalMirror[numberofsides, diameter, height, label, options] indicates a polygonal mirror having radial symmetry and vertical surfaces.
PolygonalMirror is initially placed with its axis of symmetry located vertically at the origin. The diameter parameter specifies the diameter of a circle circumscribing the polygon. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

PolygonGraphic

PolygonGraphic[numberofsides, diameter, label, options] designates a two-dimensional equilateral polygon lying in the horizontal x-y plane with its center placed at the origin of the coordinate system.
PolygonGraphic does not interact with rays in any way, but can be listed with active components or with other graphics components for creating passive three-dimensional shapes. The diameter parameter specifies the diameter of a circle circumscribing the polygon. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression.

PorroPrism

PorroPrism[entrancelength, thickness, label, options] designates a triangular corner prism that has rounded edges.
PorroPrism is created with entrance face lying in the vertical y-z plane. If the Mirrored -> True option is given, a reflective-coated surface is placed on the two reflective faces of the prism. For Baffled -> False, the side surface panels are refractive surfaces. If the Baffled -> True option is given, the side panels absorb any rays hitting them. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: Prism.

PosH

PosH is a symbol that indicates the horizontal, y-displacement position of a paraxial ray in a three-dimensional coordinate system.
PosH is designed to be used exclusively by light sources in paraxial ray-trace calculations. See also: PosV, SlopeH, and SlopeV.

PositionGroup

PositionGroup is an option of Move that controls the translation of objects. For False, all objects passed to Move are considered to be separate objects. All other values result in moving the whole group. In combination with PositionRelative -> False, PositionGroup -> False in an optical system resets all rays to their sources and the rendering of components is deleted. Group -> objectnumber or {groupposition, grouprotationmatrix} can identify the group, otherwise the orientation and position of a group is given by its first object. See also: Move, MoveGraphicalOutput, PositionRelative, TiltRelative, TiltGroup, TwistGroup, Group.

PositionRelative

PositionRelative is an option of Move that controls the translation of objects. For False, the objects are translated to the given coordinates, independent of their actual positions. All other values result in a relative translation. In combination with PositionGroup -> False, PositionRelative -> False in an optical system resets all rays to their sources and the rendering of components is deleted. See also: Move, MoveGraphicalOutput, TiltRelative, TwistRelative, PositionGroup, TiltGroup, TwistGroup, Group.

PosV

PosV is a symbol that specifies the vertical, z-displacement position of a paraxial ray in a three-dimensional paraxial coordinate system.
PosV is designed to be used exclusively by light sources in paraxial ray-trace calculations. See also: PosH, SlopeH, and SlopeV.

PowerOutput

PowerOutput is an option of light source functions that specifies the total integrated output power or energy to be expressed by a particular light source.


PowerOutput is used for making energy calculations by some built-in functions such as FindIntensity. PowerOutput can take either power or energy units such as Watts or Joules. While the scale for these units can be arbitrary, for meanful results, it is important that all light sources in a particular ray-trace are specified in a consistent fashion. PowerOutput does not directly change the value of the Intensity parameter, but is instead used to create an IntensityScale. Note that IntensityScale is currently only implemented for TurboTrace calculations.

See also: IntensityScale, Intensity, IntensityFunction, and FindIntensity.

PrependGraphics

PrependGraphics -> primitiveslist is an option of ShowSystem that gives a list of graphics to be rendered before those of ShowSystem. See also: AppendGraphics.

PrinciplePointSeparation

PrinciplePointSeparation is a database rule name that specifies the distance between the two principle planes in a lens system.

Prism

Prism[{alpha, side, beta}, height, label, options] designates a triangular refractive prism specified by two angles, alpha and beta, a side between the two angles, and a height.
Prism is created with its triangle lying in the horizontal x-y plane and its height pointing vertically. The specified side is bisected by the origin, pointing in line with the x axis. If the Centered -> True option is given, Prism is created instead with its left apex surface centered on the x-axis. The Mirrored option is used to specify reflective-coated surfaces in the prism. Mirrored -> {surfacenumbers} can be used to indicate one or more reflective-coated surfaces. Otherwise, Mirrored can hold the values: True, False, and Base. For Baffled -> False, the triangular surface panels are refractive surfaces. If the Baffled -> True option is given, the triangular surface panels absorb any rays hitting them. Baffled -> {surfacenumbers} can also be used. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: DovePrism, ReversionPrism, WedgePrism, RhomboidPrism, RoofPrism, and PellinBrocaPrism.

ProgressReport

ProgressReport is an option of FindFocus that controls printing of progress. ProgressReport -> True results in a printed out display of distance values determined by FindRoot.

PropagateSystem

PropagateSystem[system, options] takes a system of light sources and optical elements defined by a mixed list of Source and Component objects, traces the rays through the components, and returns the results as an OpticalSystem object carrying a divided listing of Ray, Source, and Component objects.
PropagateSystem is called internally by DrawSystem as well as by TurboTrace (with ScoutTrace->True). See also DrawSystem, AnalyzeSystem, TurboTrace, and TurboPlot.

PropagateSystemDeflection

PropagateSystemDeflection is an option of CustomDeflections that specifies the DeflectionFunction to be used in PropagateSystem calculations.
When CustomDeflections uses an input deflection function parameter that is compatible with PropagateSystem calculations, then PropagateSystemDeflection is not utilized. Otherwise, the input deflection function parameter is only used for TurboTrace calculations and PropagateSystemDeflection is used with PropagateSystem. PropagateSystemDeflection -> Automatic/Transmission uses a Transmission-type DeflectionFunction and PropagateSystemDeflection -> Reflection uses a Reflection-type DeflectionFunction. In all other cases, the value of PropagateSystemDeflection is directly passed as the DeflectionFunction setting in PropagateSystem.

PS

PS specifies the use of the polystyrene polymer medium.
The refractive index model for PS is most suitable for the wavelength range of .46 microns to 1.06 microns.

PupilLimited

PupilLimited is an option that denotes whether the object-scattered light is directed through a centered pupil in the optical system.

PVA

PVA denotes the use of the poly(vinyl alcohol) polymer medium.
The refractive index model for PVA is most suitable for the wavelength range of .46 microns to 1.06 microns.

PVB

PVB indicates the use of the poly(vinyl benzoate) polymer medium.
The refractive index model for PVB is most suitable for the wavelength range of .46 microns to 1.06 microns.

PVF

PVF indicates the use of the poly(vinylformal) polymer medium.
The refractive index model for PVF is most suitable for the wavelength range of .46 microns to 1.06 microns.

PVP

PVP designates the use of the poly(vinyl pyrolidone) polymer medium.
The refractive index model for PVP is most suitable for the wavelength range of .46 microns to 1.06 microns.

Pyrex

Pyrex denotes the use of low-expansion borosilicate glass medium.
The refractive index model for Pyrex is most suitable for the wavelength range of .49 microns to .64 microns.

Quartz

Quartz specifies the use of a quartz medium.
The refractive index model for Quartz is most suitable for the wavelength range of .46 microns to 1.06 microns.

QuickSurfaceSort

QuickSurfaceSort is an option of DrawSystem and PropagateSystem that selects between two competing methods for determining ray-sequencing trajectories.
QuickSurfaceSort -> True determines the ray-sequencing order through each of the Component object's surfaces by using an efficient, but occasionally fallible, method. The method uses surface center distances to get the ray-sequencing order.
QuickSurfaceSort -> False uses a slower, but more exacting approach.
QuickSurfaceSort only affects the selection of a path through the Component collection of surfaces. Once a path has been chosen within a Component, QuickSurfaceSort has no further effect within the Component pathway. QuickSurfaceSort now replaces the previous QuickTrace option name. QuickSurfaceSort is not directly used by TurboTrace. Instead, TurboTrace always assumes a QuickSurfaceSort -> False behavior.

QuickTrace

QuickTrace has been renamed to QuickSurfaceSort.

RadialSymmetry

RadialSymmetry implies that the object is radially symmetric.
In a Fresnel surface, RadialSymmetry implies that the surface grooves are circular. See FresnelSymmetry.

RadiusOfCurvature

RadiusOfCurvature is a database rule name that specifies a list of radius-of-curvatures for a component made up of spherical or cylindrical surfaces. See also SurfaceCurvature.

RainbowOfRays

RainbowOfRays[seed, {minwavelength, maxwavelength}, options] initializes a set of overlapping rays that point down the positive x-axis (for the default BirthPoint setting) and are distributed over the specified range of wavelengths, given in microns.

The distribution of rays is controlled by the GridSpacing option. If it is a list of two values, the second is used to calculate the Intensity. The starting origin is defined by the BirthPoint option. The seed parameter is optional and is used to generate more elaborate ray patterns. When it is present, it specifies additional light sources to be nested with the basic RainbowOfRays result. When PropagateSystem is used for the ray trace, RainbowOfRays produces a set of Ray objects. However, with TurboTrace calculations, a TurboRays object is generated from RainbowOfRays instead.

See also: NumberOfRays, MonteCarlo, GridSpacing, SourceFraction, SourceOffset, SingleRay, CircleOfRays, ConeOfRays, WedgeOfRays, LineOfRays, GridOfRays, PointOfRays, CustomRays, FieldOfRays, and GaussianBeam.

Ray

Ray[options] contains rules that is used to characterize a single ray segment of light between two optical surfaces.

A sequence of Ray objects is generated by PropagateSystem to characterize a single ray of light as it propagates through a branch of component surfaces. During a PropagateSystem calculation, each time a ray intersects a new component surface, a new Ray is created made up of new Ray rule values that are either updated from old parameters or introduced as new parameters according to the new surface's ray-tracing functions. In previous versions of Rayica , the Ray object could be directly assigned by the user to define new types of light source distributions. Presently, however, Ray objects are only used with PropagateSystem calculations and TurboTrace instead uses the TurboRays object, which can hold the ray information much more efficiently. As such, it is no longer recommended to directly specify Ray objects. Instead, one should utilize SingleRay when a single ray is to be traced and CustomRays when a greater quantity of user-specified rays are required. See Options[Ray] for a partial listing of the parameters embedded within Ray. Please change Options[Ray] only with SetOptions.

See also: RayParameters, SingleRay, CircleOfRays, ConeOfRays, WedgeOfRays, LineOfRays, GridOfRays, PointOfRays, CustomRays, FieldOfRays, GaussianBeam, and RainbowOfRays.

RayAmplitude

RayAmplitude = {ax, ay, az} is used within HeldDeflectionKernel functions to input the electric-field vector of a ray intersection point.
In general, ax, ay, and az are complex numbers that indicate absolute field directions. RayAmplitude is automatically generated by TurboTrace and used internally by some HeldDeflectionKernel functions. Note that RayAmplitude cannot be modified by HeldDeflectionKernel functions. In order to specify new field information, AllCreatedAmplitudes must be used instead. In addition, RayAmplitude is not a Ray quantity. Instead, Polarization is used to hold the electric-field information.
See also: AllCreatedAmplitudes and Polarization.

RayBoundary

RayBoundary -> {{leftedge, rightedge}, {topedge, bottomedge}} is a returned rule that gives the minimum rectangular dimensions that encloses the locus of rays at a designated surface.
For the one-dimensional case, RayBoundary -> {leftedge,rightedge}.

RayChoice

RayChoice -> selectionproperties that is used to selectively display ray segments in DrawSystem/AnalyzeSystem and ShowSystem.
A typical option value of RayChoice would be RayChoice -> {ComponentNumber -> 1, ConfinedPosition -> 2}. See RaySelect about how selectionproperties can be structured.

RayCurve

RayCurve is a rule of Ray that is composed of a list of three-dimensional points composing a curved ray trajectory in space.

RayEnd

RayEnd is a rule of Ray that gives the spatial ending coordinate of a ray segment. It shows the three-dimensional coordinate point where the ray intersects with the next component surface.

RayHistory

RayHistory -> listofnames is a specialized, advanced option of PropagateSystem that specifies a named list of ray and component parameters to be reported at the end of the PropagateSystem ray trace.

Normally, the list of named parameter values, given as RayHistory -> {name1, name2, ..}, gets recorded after each ray surface interaction. However, with name -> First, the value before the surface deflection is returned. To get the values on both sides of the deflection, name -> {First, Last} is used. The OpticalMedium rule is always reported for both sides of a deflection. The resulting RayHistory information is passed within the returned Ray objects of the trace and is recovered with ReadRays[trace, RayHistory].


RayHistory is primarily used by TurboTrace (with ScoutTrace -> True or SequentialTrace -> True) in order to obtain surface sequence information from PropagateSystem and is seldom used directly. However, such RayHistory information may be recovered from TurboTrace with the OutputType -> TurboSurfaces option setting followed by the ReadSurfaces function.

See also: TurboTrace, OutputType, and ReadSurfaces.

Rayica

Rayica is a ray-tracing program. This version has the build-date March 18, 2004). Some new options may be set in the file "Options.nb". Options[Rayica] contains Options -> name to specify the default settings and rules name -> listofrules. Each rule in listofrules has the form functioname -> listofoptions and is used internally as SetOptions[functioname, listofoptions]. SetOptions[Rayica] sets some default settings, SetOptions[Rayica, name] selects a named list of settings inside Options[Rayica]. At the end of loading Rayica, SetOptions[Rayica] is called, but ".mx" files are used.
If no ".mx" files are used, Needs[Rayica context] Print -> All generates a detailed loading progress report, Print -> True a short one.
See also: Needs, $SystemSymbolsInRayica.

RayicaDeveloper

RayicaDeveloper[switch] put the Rayica developer contexts on the $ContextPath (switch equals True) or remove it (switch equals False). See also: SwitchContextPath.

RayicaFunction

RayicaFunction -> functionhead is a database rule name that specifies the Rayica function used to create a model representation of the database item in Rayica.

RayicaPrivate

RayicaPrivate[switch] put the Rayica private context on the $ContextPath (switch equals True) or remove it (switch equals False). See also: SwitchContextPath.

RayicaSymbols

RayicaSymbols[string] returns a list of names defined in Rayica that are related to the given parameter string. It is fixed at the ending of the loading process and derived from ListedSymbolNames.

RayicaVersion

RayicaVersion is an option of Rayica and Move that indicates the default mode of behavior where RayicaVersion->1 indicates the original behavior of Rayica version 1.

RayL

RayL is a symbol that indicates the length of the ray segment to a particular surface intersection.

RayLabel

RayLabel is now replaced by RayLabels.

RayLabelPositions

RayLabelPositions -> {{xrelpos, yrelpos, zrelpos}, ...} is an option of Ray that indicates the rendering positions of one or more label names in the rendered Ray. The given coordinates are scaled coordinates. The first coordinate is along the ray and runs along the ray from -1 to 1. The second and third are in the direction of the equivalent parts of the RotationMatrix of the ray. The scaling is the same as for the labelling offsets for components. {0,0,0} is at the center of the ray segment. For display of information at the end of a ray, use {1,0,0}, to show the label a bit apart from the ray use for example {0,1,1}.
See also: RayLabels, DisplayInformation, RotationMatrix, Labels and GroupLabels.

RayLabels

RayLabels -> raylabel is a rule of Ray that assigns a descriptive label to the ray. Raylabel can be an expression, a string or StyleForm[raylabel, format].
RayLabels is usually accompanied with a specification for RayLabelPositions. See also: RayLabelPositions.

RayLength

RayLength is a rule of Ray that gives the geometric length of the ray segment running between two optical surfaces.

RayLimit

RayLimit is an option of PropagateSystem that sets the maximum number of rays permitted before the ray propagation is exited. It exits after the actual calculation step. It can be used to stop MonteCarlo ray tracing automatically, or to restrict automatically the memory usage.
See also: GenerationLimit and ThresholdIntensity.

RayLineRGB

RayLineRGB is an option of Ray, DrawSystem, and ShowSystem that denotes the color used in rendering the rays.
If RayLineRGB -> Automatic is used, then the RGB value is determined using the value of WaveLength with ModelRayColor. RayLineRGB -> False suppresses the rendering. Note that RayLineRGB will not affect the graphical rendering of rays unless the DrawSystem option ColorView -> Automatic is used. See also: ColorView and ModelRayColor.

RayLineStyle

RayLineStyle is an option of Ray, DrawSystem, and ShowSystem that carries a list of user-expressed graphics styles for the rendering of ray lines.

RayLineThickness

RayLineThickness -> # is an option of Ray, DrawSystem, and ShowSystem that supplies AbsoluteThickness[#] thickness values for rendering the ray.

RayNumber

RayNumber->value is an option inside a ShowText and ShowTextSelection, ShowSurfaceEllipseSelection, ShowEllipseSelection, ShowSurfacePlotSelection, ShowValueSelection rule that designates rays to be shown.
In ShowText it is used to show numbers of rays.
In the selection rules it is used to reference specified rays.
Possible values are the same as for every rule inside a selection rule.
See also: ShowText, ShowSurfaceEllipse, ShowEllipse, ShowSurfacePlot, ShowValue, Selection.

RayParameters

RayParameters is an array of ray option name lists. Each list collects the option names, necessary to describe the information, for example RayParameters[Field] == {Polarization, Intensity, WaveLength}. Defined patterns are: Source, Geometry, Field, Environment, Surface, Position, Increment, RenderSystem, Rest, SurfacePlot, Plot, ReportedParameters. See also: Ray.

RayPointRGB

RayPointRGB is an option of Ray, DrawSystem, and ShowSystem that designates the color used in rendering the ray/surface intersection points. RayPointRGB -> False suppresses the rendering.

RayPointSize

RayPointSize is an option of Ray, DrawSystem, and ShowSystem that passes information to AbsolutePointSize for the rendering of ray/surface intersection points.

RayPointStyle

RayPointStyle is an option of Ray, DrawSystem, and ShowSystem that carries a list of user-expressed graphics styles for the rendering of ray/surface intersection points.

RayQ

RayQ[x] tests whether x is a Ray object. The result is True or False.

RayScatterFunction

RayScatterFunction -> scatteringfunction is an option of AddRandomRayTilt that indicates an angular dependent scattering function for diffuse optical surfaces.
Typical RayScatterFunction settings include: Function[Cos[#]] for cosine-dependant (lambertian) scattering, Function[Cos[#]^2] for non-lambertian scattering, and Function[1] for uniform scattering. RayScatterFunction -> {scatteringfunction1,scatteringfunction2} can also be used to specify a different scattering function in the horizontal and vertical angular directions. Finally, RayScatterFunction -> Automatic works together with the CosineCompensation option. In particular, with CosineCompensation -> True and RayScatterFunction -> Automatic, RayScatterFunction is internally set to Function[Cos[#]]. Similarly, with CosineCompensation -> False and RayScatterFunction -> Automatic, Function[1] is used internally instead.

RaySelect

RaySelect[objectset, selectionproperties] takes an object set composed of Ray objects, and returns a filtered list of Ray objects that shares the common set of traits specified in selectionproperties.
There are two ways of specifying selectionproperties: the first way is to give a list of Ray options selected. The second way is to give a function that takes Ray options as inputs and returns True or False. An example of the first method is {IntersectionNumber -> 3, ComponentNumber -> 2}. An example of the second method is Function[{ComponentNumber, IntersectionNumber}, ComponentNumber == 2 && IntersectionNumber > 10]. If selectionproperties === All or selectionproperties is left out, then all Ray objects are passed back. RaySelect[objectset] returns an unfiltered list of Ray objects.
RaySelect can also be used to translate TurboTrace data into Ray object format. As an option to TurboTrace, it affects how an optical system is converted to a TurboSystem.

RaySelectRayOrientation

RaySelectRayOrientation is a an option of ShowRayOrientation that determines the rays, for which an orientation should be drawn. The value of the option is directly passed to RaySelect. See also: ShowSystem, ShowComponentOrientation.

RayShowLabels

RayShowLabels -> Automatic is an option of DrawSystem/AnalyzeSystem and ShowSystem that automatically generates label captions for each rendered Ray.
RayShowLabels -> Automatic switches off for three-dimensional presentations. RayShowLabels->True also includes labels for three-dimensions. See also: MoveRayLabels and ShowLabels.

RaySlot

RaySlot is an unauthorized rule of Ray that designates the position of a ray in a list of rays.
The RaySlot rules are renumbered after every deflection.

RaySourceNumber

RaySourceNumber -> {{raycounter, totalnumber}, numberlist} is a rule of Ray that uniquely identifies a ray inside a source. The raycounter runs from 1 to totalnumber.
The list numberlist holds the numbering of rays for each basic source included in the source. Each entry in the list is a list of two integers, numbering the first and second dimension of a source. Rows and radial position are first dimensions, columns and circumferences are second ones. If a dimension is not present or a numbering could not be calculated, the corresponding figure is set to zero. Inner sources appear right in numberlist.
For example, LineOfRays[ConeOfRays[10, NumberOfRays -> 2], 10, NumberOfRays -> 3] causes numberlist to be {{{1, 0}, {0, 1}}, {{1, 0}, {0, 2}}, {{2, 0}, {0, 1}}, {{2, 0}, {0, 2}}, {{3, 0}, {0, 1}}, {{3, 0}, {0, 2}}}. See also: Ray, Source

RayStart

RayStart is a rule of Ray that gives the spatial starting coordinate of a ray segment. It shows the three-dimensional coordinate point where the ray intersected with a component surface.

RayTilt

RayTilt is a rule of Ray that is a three-dimensional vector that designates the direction in which a ray segment is pointing in space. It is the direction of propagation of energy. RayTilt is normalized internally by Rayica .

RayTraceFunction

RayTraceFunction[inputparameters] is an encapsulated function, created by TurboTrace, that contains compiled source code for a specific optical system and performs high-speed, geometric ray-trace calculations.
The RayTraceFunction object is returned by TurboTrace when the option OutputType -> RayTraceFunction is given. Otherwise, for OutputType -> TurboSystem, RayTraceFunction is left embedded within the TurboSystem object and used internally by TurboTrace and TurboPlot. In general, user-specified symbolic parameters defined for the optical system are automatically included in the RayTraceFunction inputparameters.
See also: TurboTrace, SymbolicValues, EmbedRays, EmbedThresholdIntensity, EmbedGenerationLimit, ReportedParameters, and ReportedFunction.

ReadComponent

ReadComponent[objectset, componentparameters, selectionproperties, options] is an advanced function that takes an object set composed of Component objects and returns a list of values for componentparameters given.
ReadComponent first obtains a filtered set of Component objects by calling ComponentSelect and using the given selectionproperties. The componentparameters may contain formulas, e. g. ReadComponent[objectset, TranslationVector[[3]]].
ReadComponent is an alias of ReadComponents. See also: ComponentSelect for more about selectionproperties.

ReadComponents

ReadComponents[objectset, componentparameters, selectionproperties, options] is an advanced function that takes an object set composed of Component objects and returns a list of values for  componentparameters given.
ReadComponents first obtains a filtered set of Component objects by calling ComponentSelect and using the given selectionproperties. The componentparameters may contain formulas, (ReadComponents[objectset, TranslationVector[[3]]]). See also: ComponentSelect.

ReadRays

ReadRays[objectset, rayparameters, selectionproperties, options] is an advanced function that takes an object set composed of Ray objects and returns a list of values for the rayparameters given.
ReadRays first obtains a filtered set of Ray objects by calling RaySelect and using the given selectionproperties. Use Options[Ray] for a listing of the ray parameters available. In addition, the rayparameters may contain formulas, such as ReadRays[objectset, Polarization[[3]]] to get the polarization angle. See also: RaySelect for more about selectionproperties.

ReadSurfaces

ReadSurfaces[objectset, surfaceparameters, selectionproperties, options] is an advanced function that takes an object set composed of Component and/or TurboSurfaces objects and returns a list of values for surfaceparameters given. The objects may be inside an OpticalSystem or TurboSystem.
ReadSurfaces first obtains a filtered set of Surfaces objects by calling SurfaceSelect and using the given selectionproperties. The surfaceparameters may contain formulas, e. g. ReadSurfaces[objectset, TranslationVector[[3]]]. See also: SurfaceSelect for more about selectionproperties.

ReadTurboRays

ReadTurboRays[system, rayparameters, selectionproperties] takes TurboSystem, TurboRays, or a list with TurboRays and returns a list of values for rayparameters given.
The selectionproperties parameter is used to select the rays in the same fashion as for ReadRays, RaySelect, and  TurboRaySelect. However, the selectionproperties parameter in ReadTurboRays is optional and can be omitted, in which case, the relevant rayparameters information from all rays present in the system will be reported. In general, ReadRays operates much more efficiently when selectionproperties is omitted. When selectionproperties is included, ReadTurboRays first calls TurboRaySelect with selectionproperties to select rays. An example of selectionproperties is: ComponentNumber->1 (see RaySelect for further examples.) The rayparameters generally contains a list of Ray parameter labels that designate a ray-traced value stored in TurboRays. Some examples of rayparameters are: OpticalLength, Intensity, RayEnd, and RayTilt. See also: TurboRaySelect, ReadRays, and RaySelect.

RealTime3D

RealTime3D is a value of PlotType in Rayica that which allows the rendered three-dimensional graphics to be rotated interactively in the front end.
See also: PlotType, CreateStereoView, and RealTimeGraphicsDisplayFunction.

RecoverInput

RecoverInput[opticalsystem] reconstructs new input expressions for the specified opticalsystem and is used internally by Rayica to determine the Out cell format.
The output format of RecoverInput is controlled by the Option Print. The option Drop specifies a list of names of rules not to be returned by RecoverInput. A value of Default is used to pad incomplete components. Numbers are reconstructed with the length given by NumberLength. The whole reconstruction can be forced to return a string representing InputForm[opticalsystem] with SetOptions[RecoverInput, Active -> False].

RectangleGraphic

RectangleGraphic[{xmin, ymin}, {xmax, ymax}, label, options] refers to a two-dimensional rectangle lying in the horizontal x-y plane with its diagonal corners placed at {xmin, ymin} and {xmax, ymax}.
RectangleGraphic does not interact with rays in any way, but it can be listed with active components or with other graphics components for creating passive three-dimensional shapes. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression.

ReferenceOrder

ReferenceOrder is a rule of Ray and Component, used in Diffraction that sets the reference order for diffraction calculations. It denotes the order of diffracted light to which formulas for calculating the diffraction efficiencies are referenced. The rule is used only inside functions which calculate diffraction efficiencies. See also: Diffraction

ReferenceSystem

ReferenceSystem -> reference is an option of ShowSystem that specifies a reference passed to PlugIns of ShowSystem. This reference may have the same structure as the objects passed to ShowSystem: OpticalSystem, Ray, Component, Source or a list of these elements. If Rayica fails to find matches between the system passed to ShowSystem and the reference, it sets this element of the reference to an empty element with the proper head. The ray and component information of the reference is passed to all PlugIns of ShowSystem, inside ShowSystem no calculations are done with the reference. See also: ShowSystem and PlotType.

ReferenceWaveLengthNumber

ReferenceWaveLengthNumber is a database rule name used with multiple-valued DesignWaveLength entries that specifies which DesignWaveLength slot gets used for paraxial calculations. See also: DesignWaveLength.

Reflectance

Reflectance is an option of Reflection, Refraction, and LinearPolarization that specifies the percentage of the incident ray segment intensity that is present in a reflected outgoing ray segment.
Reflectance usually takes values running between 0 and 100. Reflectance is an option used by mirrors, lenses, and beam splitters. In some cases, Reflectance can be a function. In the case of ordinary refractive surfaces, the Reflectance works in tandom with the Transmittance option. In this case, for Transmittance -> Automatic, a Reflectance -> r value (r between 0 - 100) will automatically generate a reflected ray that is intensity-scaled by r/100 and a transmitted ray that is scaled by (100-r)/100 in intensity. By this method, any refractive surface can be made to behave as a beamsplitter. However, if a numeric Transmittance value is specified in addition to the Reflectance value, then each option will determine the intensity of a corresponding transmitted and reflected ray.
With components that are based on LinearPolarization, however, the form Reflectance -> {horizontal,vertical} is used to modify the horizontal and vertical components of polarization in a reflected ray. In this case, however, Reflectance is only used in conjunction with SplitRays -> True/Reflection. In addition to the Reflectance value, a value for Transmittance must always be separately specified for the LinearPolarization function. LinearPolarization permits both Transmittance and Reflectance to carry either two wavelength-dependent functions or two lists of {wavelength, transmittance} interpolation points.

Reflection

Reflection[component, options] is a generic building block that produces reflected rays from optical surfaces.

Refraction

Refraction[component, options] is a genetic building block that produces refracted rays through optical surfaces.
Refraction returns RayTilt and ray RotationMatrix, Intensity, Polarization, RefractiveIndex, OpticalMedium as Ray parameters.

RefractiveIndex

RefractiveIndex is a rule of Ray that gives the refractive index value for the ray segment in the local environment. It uses ModelRefractiveIndex to calculate its value.
ModelRefractiveIndex uses the model's associated labels supplied by IntrinsicMedium and ComponentMedium. IntrinsicMedium, ComponentMedium, OpticalMedium, and ModelRefractiveIndex are other options involving the refractive index. See also: AttenuationIndex, RelativePermeability.

RefractiveIndexAfter

RefractiveIndexAfter is a placeholder inside HeldTraceKernel that designates the refractive index of the transmitted ray.

RefractiveIndexBefore

RefractiveIndexBefore is a placeholder inside HeldTraceKernel that designates the refractive index of the incident ray.

RefractiveIndexFunction

RefractiveIndexFunction -> function is a rule within TurboSurfaces that designates the functions for the refractive indices on both sides of a surface.

Regular

Regular is a name inside a Theory rule to describe a general theory in contrast to exceptions defined by special names in a theory rule. See also: Theory

RelativePermeability

RelativePermeability is a rule of Ray that gives the relative permeability value for the ray segment in the local environment. Usually, the relative permeability is unity at optical frequencies. The refractive index already includes RelativePermeability, amplitude calculations may involve an additional explicit RelativePermeability.

RelativePermittivity

RelativePermittivity is a rule of Ray that gives the relative permittivity value for the ray segment in the local environment. The refractive index already includes the relative permittivity. If ModelRefractiveIndex includes the relative permittivity, it overwrites the refractive and attenuation index. The effective refractive index is then calculated as Sqrt[relative permeability * relative permittivity].

RemoveDeflection

RemoveDeflection[component, options] is a genetic building block used to remove deflections from surfaces.


RemoveDeflection -> deflectionnumbers takes numbers for deflections and removes them from all surfaces given in the option AffectedSurfaces.

See also: InsertDeflection, AffectedSurfaces, AddDeflection, AddSurface, and RemoveSurface.

RemoveSurface

RemoveSurface[component, surfacenumbers, options] and RemoveSurface[component, options] is a genetic building block used to remove the effects of specified surfaces from the component.

If surfacenumbers is not given, then the RemoveSurface -> surfacenumbers option is used instead. See also: InsertDeflection, AffectedSurfaces, AddDeflection, AddSurface, and RemoveDeflection.

RemoveSurfaceBreaks

RemoveSurfaceBreaks -> True/False/Automatic is an option of TurboTrace that indicates whether the compiled TurboRays information should contain special SurfaceBreak markers that delineate ray information from different surfaces.
Normally the SurfaceBreak information is needed to nest the TurboRays information into the different surface sites (specified by ReportedSurfaces). However, this SurfaceBreak information can corrupt the results of ReportedFunction when ray information from more than one surface is reported. The default setting of RemoveSurfaceBreaks -> Automatic becomes False with the default ReportedFunction -> Identity setting and True when ReportedFunction is set a user-specified function. Consequently, the setting of RemoveSurfaceBreaks seldom requires the attention of the user.
See also: ReportedSurfaces, ReportedFunction, and SurfaceBreak.

RenameLabels

RenameLabels -> {oldname1, newname1, oldname2, newname2,...} is an option of DrawSystem/AnalyzeSystem and ShowSystem that renames one or more of the previously rendered labels.
RenameLabels uses a sequence of two or more words that selects the relevant labels and indicates the new label names. See also: MoveLabels, AddLabels, and ShowLabels.

RenderedPolygons

RenderedPolygons is a rule of Component that directs the rendering of one or more planes whose polygonal shapes are defined by connecting surfaces given by SurfaceNumber.
RenderedPolygons contains nested lists carrying SurfaceNumber, StartPoint, FinishPoint, and RenderType rules. It is used to define the bounds and render type of the cross bridging a two-sided component.

RenderedSurfaces

RenderedSurfaces is a rule of Component that denotes a nested list of rules that defines the graphical rendering of simple surfaces.
RenderedSurfaces contains lists containing SurfaceNumber, HoleBoundary, and RenderType rules.

RenderSystem

RenderSystem[system, options] renders any system of Component and Ray objects. These graphics primitives have the head GraphicalOutput.

RenderType

RenderType is a rule nested within the RenderedSurfaces and RenderedPolygons of Component that specifies the type of rendering to be performed.
RenderType uses one or more of the following command words: Empty, Fill, Trace, and Mesh.

ReplaceFor

ReplaceFor -> objecttypes is a rule within Deflections of Component that indicates which types of objects are replaced by the new parameter results of the ray-tracing function calculation.
ReplaceFor supplants the entire contents of an object type regardless of its prior contents. For this reason, the command option AddTo is usually preferred over ReplaceFor. Possible object types of ReplaceFor include NewRay, ChangedRay, OriginalRay, CreatedRay, AllCreatedRays, ChangedSurface, and ChangedComponent. Note that the OriginalRay object type is rarely changed. Modifications to the past Ray object type are generally made using ReplaceFor instead. ReplaceFor can point to a list of object types, but is often a single value. See also: DeflectionFunction, DeflectionLabel, TakeFrom, and AddTo.

ReplaceGraphics

ReplaceGraphics is an option of ShowSystem that specifies a list of replacement rules, applied to graphics before rendering. Internally, Rayica uses ReplaceGraphics to drop some Text primitives during incremental rendering. See also: ShowSystem and MonteCarlo.

ReportedFunction

ReportedFunction -> Function[list of reported parameters] is an option of TurboTrace for OutputType -> RayTraceFunction that determines the final format of the raytrace output.
ReportedFunction uses the ray information specified by ReportedParameters for its calculations. As such, ReportedFunction relies on the joint specification of ReportedParameters to provide the list of reported parameters for its calculation. An example of this joint specification is ReportedParameters -> Intensity and ReportedFunction -> Function[Apply[Plus,#]]. A more complex example is ReportedParameters -> SurfaceCoordinates and ReportedFunction -> Function[Sqrt[Apply[Plus,Map[Dot[#,#]&,#]]]/Length[#]].
The default setting of ReportedFunction -> Identity returns the results of ReportedParameters without change. Note that ReportedFunction is only used with the TurboTrace option setting OutputType -> RayTraceFunction. See also: ReportedParameters, RemoveSurfaceBreaks, OutputType, RayTraceFunction, ReportedRays, and ReportedSurfaces.

ReportedParameters

ReportedParameters -> rayoptionnames is an option of TurboTrace for OutputType -> RayTraceFunction that indicates the ray parameters to be incorporated into the output of the ray trace.
Two examples of this are ReportedParameters -> Intensity and ReportedParameters -> {Intensity, SurfaceCoordinates}. Instead of rayoptionnames, the word values All or Automatic may be used.
Note that although ReportedParameters also exists for PropagateSystem, it cannot be used in combination with ShowSystem graphics. See also: ReportedFunction, OutputType, RayTraceFunction, and ReportedSurfaces.

ReportedRays

ReportedRays is used as a dummy variable within ReportedFunction to refer to the rays that are reported at the end of a trace.

ReportedSurfaces

ReportedSurfaces->numbers is an option of TurboTrace and PropagateSystem that indicates which surface results get included in the final ray-tracing report.
Special values are All and Last (or {-1}), which specify all surfaces and the last respectively. Both TurboTrace and PropagateSystem accept a component number or a list of component numbers to be reported. A sublist of componentnumber and surfacenumbers inside the component may also be used. These numbers relate to the sequence of the system definition.
In TurboTrace, the behavior of the ReportedSurfaces -> Last setting is dependent on the SequentialTrace option. For SequentialTrace -> True, only rays striking the last surface present in the trace sequence gets reported. However, for SequentialTrace -> False, all ray intercepts from the last Component's surfaces are reported. See also: ReportedFunction, OutputType, RayTraceFunction, and ReportedParameters.

ResolvePoints

ResolvePoints is an option of BundleOfRays that controls whether every point of the created ray list is an independent source.

For Automatic, independent sources are created, if more than one ray is used as seed to BundleOfRays. The default is a single ray, ResolvePoints is set to False. The id numbers for resolved ray sets start at the number given in the SourceID option, or are created automatically.

Resonate

Resonate[listofcomponents, objectname, options] is a generic building block, labeled by an optional objectname, that causes a ray to be nonsequentially traced within all of the surfaces defined by listofcomponents.


Resonate takes a list of Component objects and creates a single Component object from the list. Once the all of the surfaces are no longer in its trajectory, the ray is allowed to continue propagating to other components. This effect enables repeated nonsequential ray interactions with a number of surfaces to occur.

In PropagateSystem, Resonate is also used as an unauthorized option of Ray. A Ray object carrying Resonate -> True will loop through surface targets within the resonant component until no surface intersection can be found within the component. See also: Confine and Unconfine.

RestoreRayicaCache

RestoreRayicaCache[] restores special Rayica caches. All other deleted caches are restored automatically by using Rayica. Any missing cache only affects the calculation time, not the results.
See also: Rayica, ClearRayicaCache.

RetardationPlate

RetardationPlate[wavedifference, axisangle, aperture, thickness, label, options] is a flat surface optic used to introduce anisotropic phase-changes to polarized rays.
The wavedifference parameter, given in wavelength fractions, determines the amount of phase delay between two polarization states. The axisangle parameter, given in Degrees, determines the direction of the first polarization state along the optical surface with respect to the horizontal axis of the local surface coordinate system. If the thickness parameter is zero or is omitted, then the optic will be created without any thickness. The Transmittance -> transmissionvalue option can be used to weight the outgoing intensity of each outgoing ray, where transmissionvalue can be either a number between 0 and 100, a list of {wavelength, transmission} values, or a Function-headed expression that depends on ray options such as WaveLength. Otherwise, ModelIntensity[componentmedium] = {transmissionvalue} can be defined to hold an absorption function or a list of {wavelength, transmission} values. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: Polarization, PhaseRetardation, LinearPolarizer, and JonesMatrixOptic.

ReverseMigration

ReverseMigration[component, options] is a generic building block that switches the sign of SurfaceIncrement.
ReverseMigration is only valid for PropagateSystem calculations and is not recognized by TurboTrace. In this regard, ReverseMigration is now obsolete and Resonate should be used instead.

ReversionPrism

ReversionPrism[entranceheight, thickness, label, options] refers to a combination of two prism elements cemented together that reverses the image orientation without deviating the beam position.
ReversionPrism is created with its entrance surface centered in the y-z plane at the global origin, its trapizoidal dimensions parallel to the x-y plane, and the exit surface centered further down about the positive x-axis. The middle prism surface is reflective-coated. Similar in function to a DovePrism, ReversionPrism is commonly used as an image rotator. Unlike DovePrism, ReversionPrism works equally well for converging and diverging beams as well as collimated beams. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: DovePrism, PechanPrism, and Prism.

RhomboidPrism

RhomboidPrism[angle, width, length, label, options] refers to a six-sided prism having asymmetric trapezoidal dimensions on two sides and rectangular dimensions on the remaining sides.
RhomboidPrism is commonly used in laser resonators and for beam displacement applications. The angle parameter gives the angle of the two inclined entrance and exist faces. RhomboidPrism is normally aligned with its entrance face at x = 0 and the exit face positioned along the x-axis. However, if Automatic is given for the angle parameter then the Brewster's angle is used according to the ComponentMedium and DesignWaveLength options, and the prism is automatically tilted in the x-y plane to maintain a parallel exit beam with the x-axis. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: FresnelRhomb, Prism, PentaPrism, WedgePrism, and PellinBrocaPrism.

RMSFocus

RMSFocus is a setting for FocusType that specifies that the second momentum is to be minimized.

RodBaffle

RodBaffle[diameter, length, label, options] denotes an entire cylindrical absorbing surface.
RodBaffle is created with its center at the origin of the coordinate system. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

RodLens

RodLens[diameter, length, label, options] designates an entire cylindrical refractive surface.
With the option setting Centered -> True, RodLens is created with its center of mass at the coordinate origin. With Centered -> False, RodLens is created with its first surface centered about the origin and its second surface positioned down the positive x axis. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

RodMirror

RodMirror[diameter, length, label, options] denotes an entire cylindrical mirror.
With the option setting Centered -> True, RodMirror is created with its center of mass at the coordinate origin. With Centered -> False, RodMirror is created with its first surface centered about the origin and its second surface positioned down the positive x axis. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

RoofPrism

RoofPrism[side, label, options] creates either a six-sided or a nine-sided roof prism that can be used to invert, revert, and deviate an image by 90 degrees.
With the default FullForm -> False, RoofPrism creates a nine-sided, Amici-type, roof prism that has the excess corner material trimmed away. With FullForm -> True, RoofPrism creates the full-sized, six-sided, roof prism. RoofPrism is generated with its entranceface located in the y-z plane and its exit face parallel to the x-y plane. If the Centered -> True option is specified, RoofPrism is centered about the x-axis. If the Mirrored -> True option is given, two reflective-coated surfaces are placed on the roof of the prism. The user-named label parameter is optional and can be omitted. When it is present, its text content is used to identify the object in both the rendered graphics and the output cell expression. When it is omitted, Rayica uses the default setting of the Labels option with the rendered graphics.

See also: DovePrism, ReversionPrism, PechanPrism, PentaPrism, WedgePrism, RhomboidPrism, and Prism.

Rotate

Rotate[objectset, rotationangle, axisdirection, axiscenter, options] are used to rotate objects by a rotationangle about an axis defined by the optional quantities: axisdirection and axiscenter.
The primary calling pattern accepts three parameters: angle of rotation, axis direction vector, and axis center position. The angle specifies the amount of rotation. The direction and center define a line in space that is the axis of rotation. The center is a point on the line, while the direction fixes its attitude. When omitted, these parameters adopt default values of  {1,0,0} for the direction vector and {0,0,0} for the center.  This default is a vertical line through the origin.
In addition, Rotate has two axillary calling patterns given by Rotate[objectset, rotationmatrix] and Rotate[objectset, tiltvector]. Here, the rotationmatrix is a 3 x 3 matrix that defines a rotational transformation for the object. On the other hand, tiltvector is used to realign the previous optical axis of the objectset with the new direction of the tiltvector in the same fashion as the Move function.
Tiltvector and twistangle relate to every object separately for TiltGroup -> False and TwistGroup -> False respectively. Otherwise all objects are rotated together. Similarly they are with respect to the actual position for TiltRelative -> True and TwistRelative -> True, and otherwise they specify an absolute tilt and twist. The actual orientation is defined by the option Group. An absolute twist is measured as the projection of the first surface coordinate against the x axis. For MoveGraphicalOutput -> False the graphical output is not moved.
A component or source may be rotated additionally symbolically by specifying a list of a nonnumerical quantity and a number for each coordinate. Missing symbols are filled with the corresponding numerical specification, for example {{x, 0.6}, 0.8, 0} to rotate symbolically {x, 0.6, 0} and numerically {0.6, 0.8, 0}.
Rotate -> {coordinatepoints} is also an option of DrawSystem based on mouse-generated coordinatepoints that rotates components and rays in two dimensions about the selected object point.
Rotate uses a list of coordinatepoints taken with the mouse from the rendered graphics to indicate the objects being rotated and the rotation value. In a sequence of three points, the first point selects the object getting rotated and also indicates the pivot. The second and third points of the sequence give the starting and ending moment arms of rotation. Object-sequence positions may also be used to specify objects instead of coordinatepoints. Rotate uses the two-dimensional coordinate system given in PlotType.
Other related commands used for positioning components and rays include: Translate, Rotate, Move, MoveLinear, MoveDirected, and MoveReflected. See also: MoveGraphicalOutput, PositionRelative, TiltRelative, TwistRelative, PositionGroup, TiltGroup, and TwistGroup.

RotationMatrix

RotationMatrix is a rule that gives a 3 x 3 matrix of spatial rotations invoked on the original object coordinate system by Move functions.
Both Ray and SurfaceFunction use RotationMatrix. See also: TranslationVector.

RSx