physical_apertures.spider#

Spider Aperture Module

This module contains the SpiderAperture class, which represents the vanes of a spider: straight arms of equal width that run outward from a common centre and block the rays that fall on them.

Classes

SpiderAperture(width, num_arms[, offset_x, ...])

Represents a spider that blocks the rays falling on its arms.

class SpiderAperture(width, num_arms, offset_x=0, offset_y=0)[source]#

Represents a spider that blocks the rays falling on its arms.

The arms are half-lines of equal width from the centre, equally spaced in angle, the first along +x. A ray is blocked when it lies on an arm’s side of the centre and within half the width of the arm’s centreline; every other ray passes, with no outer limit.

Variables:
  • width (float) – The full width of each arm.

  • num_arms (int) – The number of arms.

  • offset_x (float) – The x-coordinate of the spider’s centre.

  • offset_y (float) – The y-coordinate of the spider’s centre.

clip(rays: RealRays)#

Clips the given rays based on the aperture’s shape.

Parameters:

rays (RealRays) – List of rays to be clipped.

Returns:

List of clipped rays.

Return type:

list

contains(x, y)[source]#

Checks if the given point is inside the aperture.

Parameters:
  • x (np.ndarray) – The x-coordinate of the point.

  • y (np.ndarray) – The y-coordinate of the point.

Returns:

Boolean array indicating if the point is inside the

aperture, that is, not on an arm.

Return type:

np.ndarray

property extent#

Returns the extent of the aperture.

Returns:

The extent of the aperture in the x and y directions. The

arms have no outer limit.

Return type:

tuple

classmethod from_dict(data)[source]#

Create an aperture from a dictionary representation.

Parameters:

data (dict) – The dictionary representation of the aperture.

Returns:

The aperture object.

Return type:

SpiderAperture

scale(scale_factor)[source]#

Scales the aperture by the given factor.

Parameters:

scale_factor (float) – The factor by which to scale the aperture.

to_dict()[source]#

Convert the aperture to a dictionary.

Returns:

The dictionary representation of the aperture.

Return type:

dict

view(nx: int = 256, ny: int = 256, ax: Axes | None = None, buffer: float = 1.1, **kwargs) → tuple[Figure, Axes]#

Visualize the aperture.

Parameters:
  • nx (int) – The number of points in the x-direction.

  • ny (int) – The number of points in the y-direction.

  • ax (Axes) – The axes to plot on.

  • buffer (float) – The buffer around the aperture.

  • **kwargs – Additional keyword arguments to pass to the plot function.

Returns:

A tuple containing the figure and axes objects.

Return type:

tuple