#include <lenslet_array.h>
Inheritance diagram for Arroyo::square_lenslet_array:

Public Member Functions | |
| square_lenslet_array (const square_lenslet_array &sq_lns_arr) | |
| square_lenslet_array (const char *filename) | |
| square_lenslet_array (const iofits &iof) | |
| square_lenslet_array (vector< long > array_axes, double flength, double lnslt_pitch, long pix_per_lenslet, long pix_per_xform) | |
| ~square_lenslet_array () | |
| square_lenslet_array & | operator= (const square_lenslet_array &sq_lns_arr) |
| void | read (const char *filename) |
| void | read (const iofits &iof) |
| void | write (const char *filename) const |
| void | write (iofits &iof) const |
| void | print (ostream &os, const char *prefix="") const |
| double | get_final_wavefront_propagation_distance () const |
| void | set_final_wavefront_propagation_distance (double wf_prop_dist) |
| long | get_final_wavefront_pixels_per_lenslet () const |
| void | set_final_wavefront_pixels_per_lenslet (long pix_per_lnslt) |
| long | get_final_wavefront_pixels_per_transform () const |
| void | set_final_wavefront_pixels_per_transform (long pix_per_xform) |
| vector< long > | get_axes () const |
| double | get_lenslet_pitch () const |
| double | get_focal_length () const |
| rectangular_region | get_covering_region (const three_frame &tf) const |
| void | transform (diffractive_wavefront< float > &wf) const |
| void | transform (diffractive_wavefront< double > &wf) const |
Protected Member Functions | |
| square_lenslet_array () | |
Protected Attributes | |
| vector< long > | axes |
| Number of lenslets across array. | |
| double | focal_length |
| Focal length of each lenslet, in meters. | |
| double | lenslet_pitch |
| Physical dimensions of each lenslet, in meters. | |
| double | final_wavefront_propagation_distance |
| long | final_wavefront_pixels_per_lenslet |
| long | final_wavefront_pixels_per_transform |
This class contains a subtle implementation of the one_to_one_optic::transform member function. The usual implementation leaves the wavefront at the same location in space, but changes the amplitude and/or phase values to effect the transformation. In a lenslet array, this paradigm is not so good because the wavefront pixels may straddle the lenslet array boundaries. Thus, straight modification of the wavefront phase would result in unwelcome edge effects.
To avoid this issue, I've included in the transform member function the free space propagation to the far field of the lenslet array. This propagation is effected using the Goertzel-Reinsch algorithm, and wavefront pixels that straddle boundaries are properly weighted. By default the propagation leaves the wavefront in the focal plane of the lenslet array, with Nyquist sampling. These parameters may be changed by using the member functions
set_final_wavefront_propagation_distance(double) set_final_wavefront_pixels_per_lenslet(long) set_final_wavefront_pixels_per_transform(long)
|
|
Null constructor |
|
|
Copy constructor |
|
|
Construct from file |
|
|
Construct from iofits object |
|
||||||||||||||||||||||||
|
Construct from the bits array_axes is a vector containing the number of lenslets along each axis flength is the focal lenth of the lenslets, in meters. lnslt_pitch is the size of the square lenslet, in meters |
|
|
Destructor |
|
|
Get the lenslet axes |
|
|
Get a rectangular region guaranteed to cover the lenslet array. The resulting region will have its edges aligned with the x and y axes of the three_frame tf. If the z axis of the three_frame is orthogonal to the z axis of the aperture, this function throws an error Implements Arroyo::optic. |
|
|
Get the final wavefront pixels per lenslet |
|
|
Get the final wavefront pixels per transform |
|
|
Get the final wavefront propagation distance, in meters |
|
|
Get the focal length |
|
|
Get the lenslet pitch |
|
|
Operator = |
|
||||||||||||
|
Reimplemented from Arroyo::plane_optic. |
|
|
Read from an iofits object Reimplemented from Arroyo::plane_optic. |
|
|
Read from file |
|
|
Set the final wavefront pixels per lenslet |
|
|
Set the final wavefront pixels per transform |
|
|
Set the final wavefront propagation distance. wf_prop_dist is in meters |
|
|
Apply the aperture to the wavefront Implements Arroyo::one_to_one_optic. |
|
|
Apply the lenslet array to the wavefront Implements Arroyo::one_to_one_optic. |
|
|
Write to an iofits object Implements Arroyo::lenslet_array_base. |
|
|
Write to file |
|
|
Number of lenslets across array.
|
|
|
Axes to use for the final wavefront in the transform member function. |
|
|
Oversampling factor to use for the final wavefrontin the transform member function. This parameter is unity for Nyquist sampling, which is the default. |
|
|
Parameter to set the location where transform member function leaves the wavefront. Measured in meters from the lenslet array. This parameter should be chosen to leave the array in the far field. This parameter defaults to the focal length of the lenslet array. |
|
|
Focal length of each lenslet, in meters.
|
|
|
Physical dimensions of each lenslet, in meters.
|
1.3.9.1