make_keystone_basis

hcipy.mode_basis.make_keystone_basis(grid, num_modes, inner_diameter, outer_diameter, angle_width, spider_width, keystone_angle=0, cache=None)[source]

Make a keystone mode basis.

This function orthogonalizes Noll-ordered Zernike polynomials over HCIPy’s spider-trimmed annular-sector aperture using a weighted QR decomposition. The construction follows the general-aperture method of [Swantner1994] and the annular-sector treatment of [Diaz2013].

[Swantner1994]

W. Swantner and Weng W. Chow, “Gram-Schmidt orthonormalization of Zernike polynomials for general aperture shapes,” Appl. Opt. 33, 1832-1837 (1994).

[Diaz2013]

Jose Antonio Diaz and Virendra N. Mahajan, “Orthonormal aberration polynomials for optical systems with circular and annular sector pupils,” Appl. Opt. 52, 1136-1147 (2013).

Parameters:
gridhcipy.Grid

The grid on which to compute the mode basis.

num_modesint

The number of keystone modes to compute.

inner_diameterfloat

The inner diameter of the keystone aperture.

outer_diameterfloat

The outer diameter of the keystone aperture.

angle_widthfloat

The angular width of the keystone aperture in degrees.

spider_widthfloat

The full width of the spiders bordering the keystone aperture.

keystone_anglefloat

The angle of the keystone aperture in radians. At an angle of 0, the center of the keystone points to the right.

cachedictionary or None

A dictionary of intermediate calculations for this exact grid, aperture geometry, and orientation. The dictionary is updated in place.