How to use the Array Ring Object

This article describes how to use the Array Ring Object to create various radial arrays of any parent object, including circular, hexapolar, or spiral arrays. Such arrays are best used to model radial packaging structures like fly's eye's arrays. 

Authored By Akash Arora


OpticStudio supports two types of array objects used to replicate any geometric parent object in Non-Sequential Mode: the Array and Array Ring. The Array object is used for modeling rectilinear arrays, with elements replicated along three user-definable axes, while the Array Ring is used to model circular, hexapolar, or spiral arrays. Both the Array Ring and the Array vastly simplify the replication of any parent object and require only as much memory as a single parent object. As a result, tracing rays through arrays is much faster than numerous individual objects.

In this article, we look at the various capabilities of the Array Ring Object for modeling radially symmetric arrays. 

Array Ring object definition

The Array Ring is best for radial packing structures, such as fly’s eye arrays. All defining parameters of the Array Ring Object are taken from the parent, including material, surface and volume properties. Additionally, the parent object can be hidden and ignored so that its only purpose is to control the shape and properties of the array elements.

The Array Ring has the ability to form several different array structures. There are two modes that determine whether the array elements are defined in a plane or normal to the surface of a sphere. These are Modes 1 and 2; shown below are the parameters available in Mode 1.


The following table provides an overview of all parameters available for each mode. Note: Parameter 2 is excluded, as this is the Mode setting. 

Parameter # Parameter Name                Mode 0                 Mode 1
1 Parent Object # The parent object used for each array element.          No Difference.
3 # of Elements The total number of elements in the array. No Difference.
4 Radius The first element is shifted this amount along the +x-axis. The location along the z-axis of the center of the sphere.
5 Alpha The first element is rotated by this angle about the local z-axis. No Difference.
6 Beta The radial shift of array elements per degree arc angle. This parameter is used to define a spiral array. The first element is rotated by this angle about the y-axis through the center of the sphere.
7 Gamma The first element is rotated by this angle about the array z-axis. No Difference.
8 Delta The arc angle along which the array elements are replicated. All elements are equi-spaced by an angle equal to "Delta"/"# Elements." No Difference.
9 Epsilon The radial shift imparted to elements after each 360° arc angle. This parameter is only useful if "Delta" ≥ 360°. The effect of a non-zero value is to define multiple, concentric circular arrays. Not Used.


For a complete description of these parameters, see the "The Setup Tab...Editors Group (Setup Tab)...Non-sequential Component Editor...Non-sequential Geometry Objects" section of the Help Files.

Building circular and hexapolar arrays

Circular and hexapolar arrays are modeled using array Mode = 0 and Beta = 0. If you'd like to create a single circular array as shown in the image below, set Delta = 360°; for such an array, the array elements are equispaced in angle. 

Circular array

A hexapolar array is defined using multiple, offset ring arrays. Open the OpticStudio sample file located in the Samples folder, "{Zemax}\Samples\Non-sequential\Geometry Creation\Ring Array Example 3- Hexapolar Array.zmx." The first Array Ring models six elements in the inner ring and six elements in the outer ring. This is achieved by setting the Epsilon parameter equal to the diameter of standard lens and setting Delta = 720° (two circles). A second Array Ring is added to fill in the additional six elements in the second ring.


In this sample file, the Parent Object is kept as the center element in the array. As stated previously, the Parent Object doesn’t have to be drawn or considered by rays; these properties are independent from the array elements.

Building a spiral array

By contrast to circular and hexapolar arrays, spiral arrays are defined by setting Mode = 1. After doing this, we must set a non-zero value for the Beta parameter to define the incremental increase in radial coordinate with arc angle. For each degree of the total arc angle (defined by Delta), the elements will be shifted by the value for Beta. This type of spiral is also known as an Archimedean spiral. Open the OpticStudio sample file "{Zemax}\Samples\Non-sequential\Geometry Creation\Ring Array Example 2- Spiral of Archimedes.zmx" to see an example of this.


Note that Beta = 5E-3, meaning that for each degree of arc rotation, the radial position of the elements will increase by 5 µm. Keep in mind that this value is in Lens Units per degree, and that large Beta values can cause the array dimensions to become very large. In this file we achieve more than one turn of the spiral by setting Delta = 600°.

Building a fly's eye array

Similarly to a spiral array, a fly’s eye array is defined using Mode = 1. The array elements are defined normal to an imaginary sphere. Open the sample file "{Zemax}\Samples\Non-sequential\Geometry Creation\Ring Array Example 1- Fly’s Eye Array.zmx" This system models overlapping lenses normal to an imaginary sphere.




Was this article helpful?
0 out of 0 found this helpful



Please sign in to leave a comment.