fields.field_group#
Field Group Module
This module defines the FieldGroup class, which manages a collection of fields in an optical system.
Kramer Harrison, 2024
Classes
A class representing a group of fields. |
- class FieldGroup[source]#
A class representing a group of fields.
- Variables:
- Methods:
get_vig_factor (Hx, Hy) – Returns the vignetting factors for given Hx and Hy values.
get_field_coords – Returns the normalized coordinates of the fields.
add_field (field) – Adds a field to the group.
get_field (field_number) – Returns the field at the specified index.
- add(y: float, x: float = 0.0, vx: float = 0.0, vy: float = 0.0, weight: float = 1.0)[source]#
Add a field to the list of fields.
- Parameters:
y – The y-coordinate of the field.
x – The x-coordinate of the field. Defaults to 0.0.
vx – The x-component of the field’s vignetting factor. Defaults to 0.0.
vy – The y-component of the field’s vignetting factor. Defaults to 0.0.
weight – Non-negative relative importance scalar (default 1.0). A weight of 0.0 means this field is excluded from optimization and weighted analysis but is still present in standalone analysis outputs. Negative values raise ValueError.
- classmethod from_dict(data)[source]#
Create a field group from a dictionary.
- Parameters:
data (dict) – A dictionary representation of the field group.
- Returns:
A field group object created from the dictionary.
- Return type:
- get_field(field_number: int) Field[source]#
Retrieve the field at the specified field_number.
- Parameters:
field_number (int) – The index of the field to retrieve.
- Returns:
The field at the specified index.
- Return type:
- Raises:
IndexError – If the field_number is out of range.
- get_field_coords() list[tuple[ScalarOrArray, ScalarOrArray]][source]#
Returns the coordinates of the fields.
If the maximum field size is 0, it returns a single coordinate (0, 0). Otherwise, it calculates the normalized coordinates for each field based on the maximum field size.
- Returns:
A list of tuples, where each tuple contains the (normalized_x, normalized_y) coordinates of a field.
- get_vig_factor(Hx, Hy)[source]#
Calculates the vignetting factors for a given field position.
Note that the vignetting factors are interpolated using the nearest neighbor method.
- Args
Hx (float): The normalized x component of the field. Hy (float): The normalized y component of the field.
- Returns:
- The interpolated x-component of the
vignetting factor.
- vy_new (float): The interpolated y-component of the
vignetting factor.
- Return type:
vx_new (float)
- remove(field_number: int) None[source]#
Remove the field at the specified field_number.
- Parameters:
field_number (int) – The index of the field to remove.
- Raises:
IndexError – If the field_number is out of range.
- require_definition() BaseFieldDefinition[source]#
Return the field definition, or raise if none has been set.
Field coordinates cannot be interpreted without a field type, so ray tracing fails with an opaque
AttributeErrorif this is skipped. This turns that into an actionable message.- Returns:
The active field definition.
- Raises:
ValueError – If no field type has been set on the system.
- set_telecentric(is_telecentric)[source]#
Specify whether the system is telecentric in object space.
- Parameters:
is_telecentric (bool) – Whether the system is telecentric in object space.
- set_type(field_type: str) None[source]#
Set the type of field used in the optical system.
- Parameters:
field_type – The type of field, e.g., ‘angle’, ‘object_height’, or ‘paraxial_image_height’.
- to_dict()[source]#
Convert the field group to a dictionary.
- Returns:
A dictionary representation of the field group.
- Return type:
- property vx#
Vignetting factors in x for each field.
- Type:
be.ndarray
- property vy#
Vignetting factors in y for each field.
- Type:
be.ndarray
- property x_fields#
x field values.
- Type:
be.ndarray
- property y_fields#
y field values.
- Type:
be.ndarray