Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

Arroyo::square_lenslet_array Class Reference

#include <lenslet_array.h>

Inheritance diagram for Arroyo::square_lenslet_array:

Arroyo::lenslet_array_base Arroyo::plane_optic Arroyo::one_to_one_optic Arroyo::optic Arroyo::three_frame Arroyo::optic Arroyo::AO_sim_base Arroyo::three_point Arroyo::AO_sim_base List of all members.

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_arrayoperator= (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

Detailed Description

A class to represent an ideal square lenslet array.

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)


Constructor & Destructor Documentation

Arroyo::square_lenslet_array::square_lenslet_array  )  [inline, protected]
 

Null constructor

Arroyo::square_lenslet_array::square_lenslet_array const square_lenslet_array sq_lns_arr  ) 
 

Copy constructor

Arroyo::square_lenslet_array::square_lenslet_array const char *  filename  ) 
 

Construct from file

Arroyo::square_lenslet_array::square_lenslet_array const iofits iof  ) 
 

Construct from iofits object

Arroyo::square_lenslet_array::square_lenslet_array vector< long >  array_axes,
double  flength,
double  lnslt_pitch,
long  pix_per_lenslet,
long  pix_per_xform
 

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

Arroyo::square_lenslet_array::~square_lenslet_array  )  [inline]
 

Destructor


Member Function Documentation

vector<long> Arroyo::square_lenslet_array::get_axes void   )  const [inline]
 

Get the lenslet axes

rectangular_region Arroyo::square_lenslet_array::get_covering_region const three_frame tf  )  const [virtual]
 

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.

long Arroyo::square_lenslet_array::get_final_wavefront_pixels_per_lenslet  )  const [inline]
 

Get the final wavefront pixels per lenslet

long Arroyo::square_lenslet_array::get_final_wavefront_pixels_per_transform  )  const [inline]
 

Get the final wavefront pixels per transform

double Arroyo::square_lenslet_array::get_final_wavefront_propagation_distance  )  const [inline]
 

Get the final wavefront propagation distance, in meters

double Arroyo::square_lenslet_array::get_focal_length  )  const [inline]
 

Get the focal length

double Arroyo::square_lenslet_array::get_lenslet_pitch  )  const [inline]
 

Get the lenslet pitch

square_lenslet_array& Arroyo::square_lenslet_array::operator= const square_lenslet_array sq_lns_arr  ) 
 

Operator =

void Arroyo::square_lenslet_array::print ostream &  os,
const char *  prefix = ""
const [virtual]
 

Print

Reimplemented from Arroyo::plane_optic.

void Arroyo::square_lenslet_array::read const iofits iof  )  [virtual]
 

Read from an iofits object

Reimplemented from Arroyo::plane_optic.

void Arroyo::square_lenslet_array::read const char *  filename  ) 
 

Read from file

void Arroyo::square_lenslet_array::set_final_wavefront_pixels_per_lenslet long  pix_per_lnslt  ) 
 

Set the final wavefront pixels per lenslet

void Arroyo::square_lenslet_array::set_final_wavefront_pixels_per_transform long  pix_per_xform  ) 
 

Set the final wavefront pixels per transform

void Arroyo::square_lenslet_array::set_final_wavefront_propagation_distance double  wf_prop_dist  )  [inline]
 

Set the final wavefront propagation distance.

wf_prop_dist is in meters

void Arroyo::square_lenslet_array::transform diffractive_wavefront< double > &  wf  )  const [virtual]
 

Apply the aperture to the wavefront

Implements Arroyo::one_to_one_optic.

void Arroyo::square_lenslet_array::transform diffractive_wavefront< float > &  wf  )  const [virtual]
 

Apply the lenslet array to the wavefront

Implements Arroyo::one_to_one_optic.

void Arroyo::square_lenslet_array::write iofits iof  )  const [virtual]
 

Write to an iofits object

Implements Arroyo::lenslet_array_base.

void Arroyo::square_lenslet_array::write const char *  filename  )  const
 

Write to file


Member Data Documentation

vector<long> Arroyo::square_lenslet_array::axes [protected]
 

Number of lenslets across array.

long Arroyo::square_lenslet_array::final_wavefront_pixels_per_lenslet [protected]
 

Axes to use for the final wavefront in the transform member function.

long Arroyo::square_lenslet_array::final_wavefront_pixels_per_transform [protected]
 

Oversampling factor to use for the final wavefrontin the transform member function. This parameter is unity for Nyquist sampling, which is the default.

double Arroyo::square_lenslet_array::final_wavefront_propagation_distance [protected]
 

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.

double Arroyo::square_lenslet_array::focal_length [protected]
 

Focal length of each lenslet, in meters.

double Arroyo::square_lenslet_array::lenslet_pitch [protected]
 

Physical dimensions of each lenslet, in meters.


The documentation for this class was generated from the following file:
Generated on Thu Nov 29 17:16:34 2007 for arroyo by  doxygen 1.3.9.1