Circular Aperture

template<IsSpectral TSpectral>
class CircularAperture : public huira::Aperture<TSpectral>

Circular optical aperture.

Models a circular aperture with a specified diameter and area, supporting PSF creation.

Template Parameters:

TSpectral – The spectral representation type.

Public Functions

CircularAperture(units::Meter diameter)

Constructs a circular aperture with the given diameter.

Initializes the aperture and computes its area from the specified diameter.

Parameters:

diameter – The diameter of the aperture in meters.

~CircularAperture() override = default
virtual void set_area(units::SquareMeter area) override

Sets the area of the aperture.

Directly sets the area value (in square meters) for the aperture.

Parameters:

area – The new area in square meters.

inline virtual float get_area() const override
void set_diameter(units::Meter diameter)

Sets the diameter of the aperture and updates the area.

Computes the area from the specified diameter and updates the internal area value.

Parameters:

diameter – The new diameter in meters.

float get_diameter() const

Returns the diameter of the aperture.

Computes the diameter from the current area value.

Returns:

The diameter in meters.

virtual std::unique_ptr<PSF<TSpectral>> make_psf(units::Meter focal_length, units::Meter pitch_x, units::Meter pitch_y, int radius, int banks) override

Creates a point spread function (PSF) for the circular aperture.

Constructs an Airy disk PSF using the aperture’s diameter and the provided optical parameters.

Parameters:
  • focal_length – The focal length of the optical system in meters.

  • pitch_x – The pixel pitch in the x direction in meters.

  • pitch_y – The pixel pitch in the y direction in meters.

  • radius – The radius of the PSF kernel in pixels.

  • banks – The number of spectral banks.

Returns:

A unique pointer to the created PSF object.