Aperture

template<IsSpectral TSpectral>
class Aperture

Abstract base class for optical apertures.

Defines the interface for all aperture types, including area management and PSF creation.

Template Parameters:

TSpectral – The spectral representation type.

Subclassed by huira::CircularAperture< TSpectral >

Public Functions

virtual ~Aperture() = default
virtual units::SquareMeter get_area() const = 0
virtual void set_area(units::SquareMeter area) = 0
virtual Vec2<float> sample(Sampler<float> &sample) const = 0
virtual std::unique_ptr<PSF<TSpectral>> make_psf(units::Meter focal_length, units::Meter pitch_x, units::Meter pitch_y, int radius, int banks) = 0
void build_defocus_kernel(units::Diopter defocus, units::Meter focal_length, units::Meter pitch_x, units::Meter pitch_y, int banks)
const Image<float> &get_defocus_kernel(float u, float v) const
inline float get_defocus_radius() const
inline int get_defocus_half_extent() const
inline bool has_defocus() const
virtual units::Meter get_bounding_radius() const = 0

Protected Functions

virtual void rasterize_kernel_(Image<float> &kernel, float radius_pixels, float offset_x, float offset_y) = 0

Protected Attributes

struct huira::Aperture::PolyphaseCache defocus_cache_
struct PolyphaseCache

Public Members

float radius = 0.f
int half_extent = 0
int banks = 0
int dim = 0
std::vector<Image<float>> kernels