npix_rect_ann_center

npix_rect_ann_center(
    x,
    y,
    w_in,
    h_in,
    w_out,
    h_out,
    theta_in=0.0,
    theta_out=None,
    *,
    shape,
    mask=None,
    validate=True,
)

Return center-selected rotated-rectangle-annulus effective in-frame pixel counts.

Parameters

x, y : scalar or array_like

Aperture center coordinates in pixel units. Shapes must match after numpy.atleast_1d. The return shape matches that broadcast-free input shape, so scalar inputs return one-element arrays.

w_in, h_in : float

Inner rectangle full width and height in pixels. w_in is measured along the inner rectangle’s local x axis, and h_in along its local y axis.

w_out, h_out : float

Outer rectangle full width and height in pixels. w_out is measured along the outer rectangle’s local x axis, and h_out along its local y axis. Each outer dimension must be no smaller than the corresponding inner dimension, and at least one outer dimension must be larger. At theta_out=0, the outer width axis is aligned with the image x axis and the outer height axis with the image y axis.

theta_in : float, optional = 0.0

Inner rectangle rotation angle in radians, measured counterclockwise from the positive image x axis to the inner rectangle’s local width axis.

theta_out : float or None, optional = None

Outer rectangle rotation angle in radians, measured counterclockwise from the positive image x axis to the outer rectangle’s local width axis. If None, uses theta_in.

shape : tuple[int, int]

Image shape as (ny, nx) used to clip the aperture footprint.

mask : array_like of bool, optional = None

Boolean image mask with shape shape. True pixels are excluded from the returned effective pixel count.

Returns

npix : ndarray

Effective pixel count inside the image frame.

Notes

For matched inner and outer angles, this uses outer-minus-inner direct center aperture summation. For split-angle annuli, it uses Rust-generated bbox-tight annulus weights and the same center-boundary convention as bbox-tight weights.